2017-05-27 25 views
0

我使用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代替

回答

0

您錯過了標頭尾部和郵件正文開頭之間的空行。沒有它,其餘的消息被解釋爲它仍然是標題的一部分。

另外,endl強制在流中刷新無緣無故,這會在文件上完成時導致性能下降。只需使用\n

+0

嗯,你是對的!非常感謝...我想知道爲什麼它在以前認爲的gmail上工作..... –

+0

也許你發送的消息,其中包含一個空行的地方? –

+0

也許.....以爲我只是複製粘貼到gmail的代碼...無論如何它的工作,現在我知道爲什麼,不會犯這樣的錯誤兩次。 –