(Qt)卷曲上传到smtp发送一个空的电子邮件
问题描述:
我使用Qt和我最近使用Gmail做了一个类似的应用程序。现在,我想把电子邮件从Outlook发送到Gmail。 编辑:我只是想在我的Outlook收件箱中使用的应用程序的密码,但仍然空的电子邮件从Outlook发送到Outlook ... 编辑完这里是我的代码:(Qt)卷曲上传到smtp发送一个空的电子邮件
if(file.open(QIODevice::ReadWrite)){ //Writes in the msg.txt
QTextStream stream(&file);
stream << "From: \"Me\" <[email protected]>" << endl;
stream << "To: \"Me\" <[email protected]>" << endl;
stream << "Subject: Subject" << endl;
stream << msg << endl; //msg is just a QString variable
}
QString cmd = "ccurl smtp://smtp-mail.outlook.com:587 -v --mail-from \"[email protected]\" --mail-rcpt \"[email protected]\" --ssl -u [email protected]:xxxxxxxxxxxxxx -T \"msg.txt\" -k --anyauth --insecure & pause";
const std::string s = cmd.toStdString();
const char* ccmd = s.c_str();
system(ccmd);
暂停只是用于测试目的。另外,我的.exe被命名为'ccurl',并且出现的控制台不会引发任何错误。我收到一封电子邮件,但它只是说像(空)
---
Email checked by avast....
感谢您的帮助!
Ps。不要告诉我使用libcurl代替
答
您错过了标头尾部和邮件正文开头之间的空行。没有它,其余的消息被解释为它仍然是标题的一部分。
另外,endl
强制在流中刷新无缘无故,这会在文件上完成时导致性能下降。只需使用\n
。
嗯,你是对的!非常感谢...我想知道为什么它在以前认为的gmail上工作..... –
也许你发送的消息,其中包含一个空行的地方? –
也许.....以为我只是复制粘贴到gmail的代码...无论如何它的工作,现在我知道为什么,不会犯这样的错误两次。 –