(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

+0

嗯,你是对的!非常感谢...我想知道为什么它在以前认为的gmail上工作..... –

+0

也许你发送的消息,其中包含一个空行的地方? –

+0

也许.....以为我只是复制粘贴到gmail的代码...无论如何它的工作,现在我知道为什么,不会犯这样的错误两次。 –