2011-07-06 203 views
1

我正在製作一個控制檯應用程序,當被問及時需要發送電子郵件。我該怎麼做? 雖然我試過this link但它不成功,因爲你需要額外的軟件。 AND當我真正收到電子郵件時,延遲了大約10分鐘。可能是什麼問題?從C++代碼發送電子郵件

這是在對話框中顯示當您運行的第一個代碼

enter image description here

是否有任何其他方式?

是否有任何解釋在代碼中使用的函數解釋從C++程序發送電子郵件的任何鏈接。

+0

該對話框出現了什麼問題?這是一項安全功能,旨在保護用戶的隱私和電子郵件帳戶。它清楚地解釋了這種情況,並讓他們有機會取消他們想要的。如果沒有,它會繼續併發送電子郵件。這正是你想要的。不要試圖解決沒有被破壞的問題。 –

+0

@科迪格雷當我收到使用該代碼的電子郵件時,有10分鐘左右的延遲?這可能是什麼原因? –

+0

進度條是否持續10分鐘?否則,我認爲問題與您的電子郵件帳戶有關。 –

回答

4

VMime試試吧!

(發送郵件是沒有內置功能語言,你將不得不使用某種庫)。

+0

在Codeproject.com上搜索vmime.NET! (用於支持SSL和TLS的C++和.NET程序員的SMTP,POP3和IMAP庫) – Elmue

2

如果你只是想在你的默認郵件代理打開郵件窗口,使用ShellExecute

ShellExecute(
    NULL, 
    NULL, 
    TEXT("mailto:[email protected]"), 
    NULL, 
    NULL, 
    SW_SHOWNORMAL); 

此外:connected topic: C++ SMTP Example

+0

@Suhail Gupta:在[MSDN]上檢查它(http://msdn.microsoft.com/zh-cn/library/bb762153%28v = VS.85%29.aspx):_Shellapi.h_。 – Naszta

+0

這不就是在您的默認郵件代理中打開郵件窗口嗎? –

+0

@Tomalak Geret'kal:是的,對不起。 – Naszta

1

libCurl是一個高度可移植的C/C++網絡庫,支持SMTP。他們的網站上有a sample

+0

哇,甜的。我從來不知道,非常方便。 –

0

您可以使用CDO來做到這一點。我認爲這是通過展望Outlook對象模型。所以你也不會得到這個警告對話。

+0

@ ferosekhanj什麼是CDO? –

2

要發送電子郵件,您可以打開一個tcp網絡套接字到收件人的郵件服務器,例如, smtpmail.example.com,端口25.

有關Windows套接字編程的詳細信息,請參閱http://www.snible.org/winsock/或其他教程。

然後根據SMTP協議文本寫入該套接字:

HELO mymachine_ipaddress_or_dnsname 
MAIL FROM:<[email protected]> 
DATA 

From: <[email protected]> 
To: <[email protected]> 
Subject: Test message 

Hello, greetings. 
. 
QUIT 

然後關閉插座。實際上,SMTP中沒有內置的發件人身份驗證...