我想创建一个简单的发送邮件函数的自定义应用程序创建的Qt框架在C + +。我非常接近SMTP正试图进行身份验证的地步,并且无法让我的生活得以实现。这是我正在与SMTP身份验证QT/C++
do {
responseLine = socket->readLine();
response += responseLine;
}
while (socket->canReadLine() && responseLine[3] != ' ');
responseLine.truncate(3);
if (state == Init && responseLine[0] == '2') {
// banner was okay, let's go on
*t << "HELO there\r\n";
t->flush();
state = Auth;
} else if (state == Auth && responseLine[0] == '2') {
*t << "STARTTLS\r\n";
*t << "AUTH PLAIN\r\n";
t->flush();
state = User;
} else if (state == User && responseLine[0] == '2') {
*t << "username\r\n";
t->flush();
state = Pass;
} else if (state == Pass && responseLine[0] == '2') {
*t << "pass\r\n";
t->flush();
state = Mail;
} else if (state == Mail && responseLine[0] == '2') {
// HELO response was okay (well, it has to be)
*t << "MAIL FROM: " << from << "\r\n";
t->flush();
state = Rcpt;
} else if (state == Rcpt && responseLine[0] == '2') {
*t << "RCPT TO: " << rcpt << "\r\n"; //r
t->flush();
state = Data;
} else if (state == Data && responseLine[0] == '2') {
*t << "DATA\r\n";
t->flush();
state = Body;
} else if (state == Body && responseLine[0] == '3') {
*t << message << "\r\n.\r\n";
t->flush();
state = Quit;
} else if (state == Quit && responseLine[0] == '2') {
*t << "QUIT\r\n";
t->flush();
// here, we just close.
state = Close;
emit status(tr("Message sent"));
} else if (state == Close) {
deleteLater();
return;
} else {
// something broke.
这是一个加密问题吗?我可以看到你正在使用STARTTLS,但是我看不到你如何处理后续行的实际解密/解密...... – orithena 2010-06-28 18:56:39