C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
NMSMTP..., Письмо послать, короче....
Deem
Отправлено: 12.01.2005, 17:06


Мастер участка

Группа: Участник
Сообщений: 327



Я понимаю, что эта тема всем надоела, и в нете я нарыл дофига примеров (все строчка — в строчку одинаковые). Т.е. просто все и понятно. Но У МЕНЯ НЕ РАБОТАЕТ!
В нет выхожу из локальной сети. Могу через шлюз, а могу и через проксю. Чаще через шлюз (предпочитаемый DNS провайдера указан)
WIN2000 4 SP. Да и почтовые серваки выдергиваются: вот недавно узнал, что для коннекта на newmail.ru надо не логин указывать, а ящик целиком. Они же требуют и пароль. Но у компонента NMSMTP некуда его совать. И.т.д.
Скажите, через какой сервак (чтобы на 100%) можно хоть одно письмо отправить, ну и с учетом моей домашней сети. Я уже не знаю, что делать. Блин. Спасите.
PS. До отправки , собтвенно, письма не доходит. Приконектиться не могу. А ошибка всегда одна: Connection Failed. Иногда проскакивает превышение времени ожидания.
Deem
Отправлено: 12.01.2005, 17:42


Мастер участка

Группа: Участник
Сообщений: 327



Вот же блин. Как написал, пошел на mail.ru почитал. Там пароль не нать, но от кого надо указывать свое. И еще: порт 25 либо 2525. Так на 25 не пошло. А на 2525 соединился и отправил с аттачем! Ну не ######? Посмотрю, как получу еще. smile.gif


Хотя не отправилось. Без аттача пошла. А с маленьким файлом 8к сдохло. Зависло, а потом вылетело в Билдер: Connection reset by peer.

Отредактировано Deem — 12/01/2005, 19:03
Gedeon
Отправлено: 12.01.2005, 17:58


Ветеран

Группа: Модератор
Сообщений: 1742



тут 90% прокси виновато, попробуйте телнетом на 25 и 2525 порты сходить и отправить письмо руками, если получится, тада билдер, нет — тада прокси надо рыть, попробуйте, дальше подумаем.


ЗЫ Как переезд? Сори за офтоп.
Deem
Отправлено: 12.01.2005, 18:32


Мастер участка

Группа: Участник
Сообщений: 327



Переезд в Россию? Отделался легким испугом. И опять я в Одессе.
А письмеца уже идеут классно. Через шлюз. Но без аттачей. пишет 56536 байт из 118567 отправлено. И умирает. Потом вылетает по приведенному выше ругательству.

И если файл 6789 — то отправляет первый пакет 6789.... и на этом усе.
10054 Connection reset by peer — что воно таке?

Удалось переправить файл boot.ini (он мизерный 235 б) с диска С:
Ушел файл 512 байт.
А вместе эти два файла не пошли. smile.gif

Отредактировано Deem — 12/01/2005, 20:05
Gedeon
Отправлено: 13.01.2005, 12:57


Ветеран

Группа: Модератор
Сообщений: 1742



Я так понимаю почтовик на юникс-системе, Connection reset by peer выдается когда демон не слушает смтп порт, дальше 10054 от этот порт часто выбирается как промежуточный для прогона почты через антивирус. Получается ли нормально отправлять письма обычным почтовым клиентом?

И еще пожелание возьмите лучше инди.
Deem
Отправлено: 13.01.2005, 13:23


Мастер участка

Группа: Участник
Сообщений: 327



Gedeon, чего все время на Вы.... Оно, конечно, круто. Но мы — не они. У нас есть "ты". smile.gif
Да, попробую инди. А бат работает. И прицепленными файлами. И у меня малкие файлы (~ 1Кб) проезжают. Черт знает.....
Deem
Отправлено: 13.01.2005, 13:33


Мастер участка

Группа: Участник
Сообщений: 327



А как TIdSMTP заставить прицеплять файлы? Сходу так не понял. smile.gif
Gedeon
Отправлено: 13.01.2005, 14:01


Ветеран

Группа: Модератор
Сообщений: 1742



Почему на Вы? Ну такой у меня стиль общения smile.gif .

По поводу аттачментов, вот кусок кода сразу выдрал при отправке письма, тут разберешся.

CODE

TIdSMTP *SMPT = new TIdSMTP(NULL);
SMPT->Host = "90.0.0.3";
SMPT->Port = 25;
SMPT->UserId = "gedeon";

SMPT->Connect();
if(SMPT->Connected()){
WriteToFileMsg(ExtractFilePath(Application->ExeName) + "log.txt",
Date().FormatString("dd.mm.yyyy ") + "Starting Send\n");
TIdMessage* M = new TIdMessage(NULL);
M->From->Text = "gedeon@bigenergy.zp.ua";
M->Recipients->Add();
M->Recipients->Items[0]->Text = "katya@bcs.zp.ua";
M->Recipients->Add();
M->Recipients->Items[1]->Text = "smir@bcs.zp.ua";
M->Subject = "Êóðñû âàëþò è äðàã ìåòàëëîâ";
M->Body->Add("See the attachment file(s)");
TIdAttachment* att = new TIdAttachment(M->MessageParts,
"C:\\Program Files\\Common Files\\Gedeon Shared\\BCS\\ValGold.txt");
M->MessageParts->Add();
M->MessageParts->Items[0] = att;
WriteToFileMsg(ExtractFilePath(Application->ExeName) + "log.txt",
Date().FormatString("dd.mm.yyyy ") + "ValGold.txt Attached\n");
if(NeedSoftMoney()){
if(FileExists(SoftMoneyName)){
CopyFile(SoftMoneyName.c_str(),
"C:\\Program Files\\Common Files\\Gedeon Shared\\BCS\\SoftVal.txt",false);
TIdAttachment* soft_att = new TIdAttachment(M->MessageParts,
"C:\\Program Files\\Common Files\\Gedeon Shared\\BCS\\SoftVal.txt");
M->MessageParts->Add();
M->MessageParts->Items[1] = soft_att;
WriteToFileMsg(ExtractFilePath(Application->ExeName) + "log.txt",
Date().FormatString("dd.mm.yyyy ") + "SoftVal.txt Attached\n");
}
}

try{
SMPT->Send(M);
}
//ExceptionHappaned = false;
catch(Exception &E){
ExceptionHappaned = true;
WriteToFileMsg(ExtractFilePath(Application->ExeName) + "log.txt",
Date().FormatString("dd.mm.yyyy ") + E.Message + "\n");
}
SMPT->Disconnect();
delete att;
delete M;

}
delete SMPT;


ЗЫ Вот ведь лень иногда к чему приводит, везде по коду SMPT, а правильно то SMTP назвал млин неправильно и давай дальше городить biggrin.gif .

Отредактировано Gedeon — 13/01/2005, 15:07
Deem
Отправлено: 13.01.2005, 14:32


Мастер участка

Группа: Участник
Сообщений: 327



Ой, я тут рою.... А меня уже лакомый кусок ждет. Аж неудобно. smile.gif Вроде напросился. smile.gif Спасибо.
Deem
Отправлено: 13.01.2005, 15:03


Мастер участка

Группа: Участник
Сообщений: 327



Оч. Интересно, инди матюкается Socket Error 10054. А ведь NMSMTP ту же ошибку давал. Это и есть Connection reset by peer.

Отредактировано Deem — 13/01/2005, 16:08
Gedeon
Отправлено: 13.01.2005, 15:25


Ветеран

Группа: Модератор
Сообщений: 1742



Вот что по этому поводу МСДН говорит
QUOTE

Connection reset by peer.
An existing connection was forcibly closed by the remote host. This normally results if the peer application on the remote host is suddenly stopped, the host is rebooted, the host or remote network interface is disabled, or the remote host uses a hard close (see setsockopt for more information on the SO_LINGER option on the remote socket). This error may also result if a connection was broken due to keep-alive activity detecting a failure while one or more operations are in progress. Operations that were in progress fail with WSAENETRESET. Subsequent operations fail with WSAECONNRESET.


А у тебя настройки портов на почтовике и на компоненте совпадают? Вообще странно должно работать, не пойму, тут похоже всеж что-то с ... а хрен его знает с чем. Блин, ну как так почтовик работает, а инди нет, не пойму, что всеж получается через телнет?
Deem
Отправлено: 13.01.2005, 15:41


Мастер участка

Группа: Участник
Сообщений: 327



Порты совпадают. Иначе коннект не происходит. Вот с newmail.ru не сконектился. Хотя прочитал их требования к авторизации. Ошибка 11001. Пойду с прамой машины пошлю попробую в нет. И с другим сервером свяжусь.
Deem
Отправлено: 13.01.2005, 16:29


Мастер участка

Группа: Участник
Сообщений: 327



Пообчался с вебпрограммером, послал через наш SMTP, через провайдера. Полетели файлы. Просто аттачи чего-то застревали. Хотел, чтоб работало полюбому. Ну ладно, пусь будет так.
Но теперь другая фигня — файлы покалеченные. Кто их кодирует? Сервер или моя прога? Я тут как бы совсем нифига не понимаю. Подскажите.
Gedeon
Отправлено: 13.01.2005, 16:48


Ветеран

Группа: Модератор
Сообщений: 1742



Честно говоря прога не калечит, да и сервер не должен, тут уже чет помочь не могу, попробуйте письмо прислать самому себе т.е. через смтп и себе он должен локально переслать кое-чего исключается из цепочки.
Deem
Отправлено: 13.01.2005, 17:07


Мастер участка

Группа: Участник
Сообщений: 327



Не.... smile.gif Спасибо, все работает. И то, что я вчера с NMSMTP написал, и Ваш пример. То был обрезанный файл. Я на размер не посмотрел. Видимо, обрыв коннекта или еще что.
Gedeon
Отправлено: 13.01.2005, 17:27


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Deem @ 13/01/2005, 18:09)
и Ваш пример.

Ну вот, я на ты перешел, а ты на Вы biggrin.gif

Ну и зашибись, что работает, мы ведь к этому и стремимся все.
К слову Задача программиста: намагнитить быстро вращающиеся диски в нужных местах. smile.gif
Deem
Отправлено: 13.01.2005, 18:30


Мастер участка

Группа: Участник
Сообщений: 327



Да... Я уже обалдел с этой почтой. У меня три проги: пример билдера, моя с NMSNTP и Ваша. В тело русский язык ни одна не передает. Две передают в теме русский. И одна непонятным образом режет файлы. Конешно же это мой вариант. Но порывшись вижу только, что от борландовского примера она не опличается. А файлы передает нормально. События на передачу пакетов приходят и статус. А вот с ящика сливаю файл, а от драный. Ну ладно с файлом. А русский в инди (народ пишет) может так и не появиться. Одна морока. smile.gif
Deem
Отправлено: 14.01.2005, 15:09


Мастер участка

Группа: Участник
Сообщений: 327



Но можно же тут закодить русский, чтоб на ящик он прилетел в правильном виде. А в какую таблицу перевести?
Deem
Отправлено: 14.01.2005, 16:54


Мастер участка

Группа: Участник
Сообщений: 327



M — IdMessage
M->ContentType = "text/plain";
M->CharSet = "Windows-1251";
- не проходит.


В NMSNTP написал
NMSMTP1->Charset = "windows-1251";
и все обалденно. А c Indy чего делать?

Отредактировано Deem — 14/01/2005, 17:57
unknow
Отправлено: 17.01.2005, 15:11


Не зарегистрирован







У меня при отправке используя TNMSMTP вылазит "Incomplete header" — т. е. неполные данные. СС , BCC, какой-нибудь текст в письме — это все необходимо?
Или же делема в чем то другом!
Deem
Отправлено: 18.01.2005, 11:03


Мастер участка

Группа: Участник
Сообщений: 327



Не, уже все нормално. Вернулся я к примеру 6 Билдера для NMSNTP. Добавил MSMTP1->Charset = "windows-1251"; и все классно работает. И русский — везде, и файлы нормально аттачатся. В нет выхожу из локалки через шлюз. И почтовик использую самый ближний — провайдера. Через, например, smtp.mail.ru, который во всех примерах в инете smile.gif приаттаченные файлы отправить так и не смог. Просто письма шли нормально. Тут все дело в локалке.
Deem
Отправлено: 19.01.2005, 12:04


Мастер участка

Группа: Участник
Сообщений: 327



Сори, Unknow, я не понял, что это вопрос по твоим делам.
Все поля заполнять необязятельно. Последний раз я заполнил набором адресов поле "скрытая копия", а в "кому" ваще ничего. Все прекрасно дошло.
Nick
Отправлено: 19.01.2005, 13:42


Машинист паровоза

Группа: Участник
Сообщений: 247



У меня был баг с NMPOP.
Вложенные файлы принимались урезанными 5-3 байта,
"вылечил" добавлением 10 байт с контрольной длиной файла там же,
В indy кажется такого бага нет.

Точно NMPOP — так как отправленые письма все почтовики принимали правильео.

Вернуться в Вопросы программирования в C++Builder