2014-01-27 41 views
0

我想用smtp/imap發送電子郵件並在一段時間後檢查回覆。 所以我正在尋找一個開源的庫,它提供了一個用於發送電子郵件和稍後檢查回覆的API。發送IMAP信息並檢查回覆

據我所知,每條消息已經包含唯一的ID,並且我看到很多允許通過ID下載消息的庫。但是在發送電子郵件時,我看到沒有任何SMTP客戶端返回此ID。

這種API的是有幫助的(S22.Imap):

using (ImapClient Client = new ImapClient("imap.gmail.com", 993, 
"username", "password", AuthMethod.Login, true)) 
{ 
    uids = GetUIdsFromMyDatabase();//how can that be achieved? 
    IEnumerable<MailMessage> messages = Client.GetMessages(uids); 
} 

但它留下兩個問題打開:
1.我在哪裏可以獲取消息發送ID?
2.如何在答覆和其父母(發送一份)之間進行連接?

回答

3

SMTP客戶端可以自己創建一個消息ID。他們只需確定左手邊有點獨特。

如果客戶端沒有創建SMTP服務器的ID,但它不會告訴SMTP客戶端該ID是什麼。一個簡單而安全的方法是通過MD5或SHA1哈希提供您要發送的消息(整個消息),對結果進行base64編碼並生成表格ID <[email protected]>其中哈希爲base64'd散列和doma.in是From字段的域。

連接回復的傳統方式是使用消息ID和引用。當您發送回覆時,您將您的引用設置爲原始郵件的引用和郵件ID字段的串聯。

+0

嗨,謝謝,問題是我不發送回覆。我們的客戶回覆我們發送的消息。如何設置該ID?我可以在收到郵件時通過IMAP搜索嗎?謝謝 – SexyMF

+1

是的。在您發送的郵件上設置一個Message-Id。稍後,您可以使用IMAP命令(例如「uid搜索標題引用」<[email protected]>「')在消息中查找該消息標識。有更多的方法,但這基本上是如何的gmail將回復關聯在一起,所以它應該足夠了。 – arnt