C++ Обработка событий в консоли (SMTP)
отправляю файл по SMTP, но выходит ошибка "Authetication failed", отправлять файл мне необходимо в консоли, как в ней обрабатывать события?
Какие еще события в консоли?
Если тебе ошибку надо обрабатывать, то делай catch. Да собственно и API у SMTP тоже возвращают коды ошибок, если надо. Ну, а методы класса TNMSMTP (как-то так) и подавно...
В консоли это значит,что я пишу программу Console Wizard. В программе я создаю объект типа TNMSMTP, описываю его методы, запускаю программу на выполнение и выходит эта ошибка.
Ну, и? Если тебе надо, чтобы ошибка не выходила, то проверь login/password...
Если тебе надо обрабатывать появление ошибки, то используй try {} catch () {}
Надо подробнее писать...Или сорсы кидать...
TNMSMTP *send = new TNMSMTP(0);
if (send->Connected)
send->Disconnect();
send->PostMessage->FromName = "corpsman";
send->PostMessage->FromAddress = "corpsman@liana";
send->PostMessage->ToAddress->Add("mona-t@liana");
send->Host = "172.31.0.1";
send->UserID = "corpsman";
send->PostMessage->Subject = "проба";
send->PostMessage->Body->Text = "ля-ля-ля" ;
send->Connect();
send->SendMail();
delete send;
if (send->Connected)
send->Disconnect();
else
{
send->Host = "172.31.0.1";
send->UserID = "corpsman";
send->Connect();
}
Потом уже работать:
send->PostMessage->Subject = "проба";
send->PostMessage->Body->Text = "ля-ля-ля" ;
send->SendMail();
А насчет отправки файла, так это свойство
send->PostMessage->Attachments->...
У тебя написано, что файл не отправляется, а в коде нет и тени намека на отправку файла.
Насчет провала аутентификации:
many servers will not allow sending of mail without a valid User ID.
If a UserID is required but not supplied, the OnAuthenticationFailed event is called.
if (send->Connected)
send->Disconnect();
else
{
send->Host = "172.31.0.1";
send->UserID = "corpsman";
send->Connect();
}
Потом уже работать:
send->PostMessage->Subject = "проба";
send->PostMessage->Body->Text = "ля-ля-ля" ;
send->SendMail();
А насчет отправки файла, так это свойство
send->PostMessage->Attachments->...
У тебя написано, что файл не отправляется, а в коде нет и тени намека на отправку файла.
Насчет провала аутентификации:
many servers will not allow sending of mail without a valid User ID.
If a UserID is required but not supplied, the OnAuthenticationFailed event is called.
Все уже отправляется, но возник другой вопрос: данные из файла помящать в само сообщение т.к. сам файл маленький txt-ишник. Если знаешь помоги разобраться, мне надо использовать sstream.
Слава богу, что отправляется.
В чем проблема помещать *.txt-файл в сообщение?
Тем более, что он маленький и текстовый? Бери и помещай. Что значит "надо использовать"? Видимо имелся в виду fstream, а не sstream...
using namespace std;
// create a bi-directional fstream object
fstream inout("fstream.out");
char p[100];
// extract the first line
inout.getline(p,100);
Корректнее через open поставить openmode в ios_base::in
open(const char* s,ios_base::openmode =
ios_base::out | ios_base::in,
long protection = 0666);
Есть потомки ofstream и ifstream (последний как раз для тебя). Лучши их используй.
Я думаю это поможет кодировке, т.к. текст этого файла в сообщении не читаем на русском языке:
C:\??? ????? LOG\eicar\eicar.com ??????????? EICAR Test File (NOT a Virus!).