Я использую небольшую программу в Linux Qt5 c ++, полученную из проекта "Qt Simple Mail".Я добавляю пустоту, и мне нужно ввести все адреса электронной почты с ошибочными ответами сервера.Как я понимаю, как правило, все эти значения ответа: 220, 250, 234, 235, 334, 354 - это только ответ сервера для управления сообщением, все остальные - неверный ответ.Неверный ответ означает, что адрес электронной почты недействителен, адрес получателя помещен в папку со спамом получателем и т. Д. И т. Д. Мне нужно сохранить все эти адреса электронной почты в файл.
Мое первое решение - это:
else
{
// something broke.
QString rsp1 = response;
QByteArray ba = rsp1.toLatin1();
const char *c_rsp2 = ba.data();
state = Close;
emit status( tr( "Failed to send message" ), tr(c_rsp2));
}
первоначально это был сигнал только с одним значением, я добавил еще одно, вторую QString, чтобы сигнализировать из QMessageBox из главного окна проблему .... в главном окне в управлении сигналами Iсделал так:
else if ((stat == "Failed to send message") && isCvs&& user_mail.isEmpty() && (counter < (user_mail.size() - 1)))
{
QString FakeAdress = user_mail[counter];
ui->indirizziNO->appendPlainText(FakeAdress);
QFile MailError("/home/con/MAR/MailError.txt");
if(!MailError.open(QIODevice::Append)){
qDebug() << " error file not exist";
return;
}
else{
QTextStream out(&MailError);
out << user_mail[counter]+"\n\n";
MailError.flush();
MailError.close();
}
counter++;
QString sno = QString::number(counter);
ui->ContInvi->setText(sno);
QMessageBox *mbox3 = new QMessageBox();
mbox3->setWindowTitle(tr("Messages Sender"));
mbox3->setText("Unexpected reply from SMTP server:\n\n" + err);
mbox3->show();
QTimer::singleShot(3000, mbox3, SLOT(hide()));
QTimer::singleShot(15000, this, SLOT(sendMail()));
}
это работает ... но если у сервера есть некоторая задержка, механизм не работает должным образом, и часть почты не сохраняется в MailError.txt ..... так что в настоящее время, если ответправильно, все заканчивается хорошо, и адрес сохраняется в файле ... в противном случае нет.
Есть ли способ перехватить поздние ответы?
, как очевидно, я не очень хорошо знаюмеханизмы ответа почтовых серверов, поэтому я не знаю, куда обращаться за информацией для решения проблемы.
спасибо за любые указания.
bkt