2015-05-28 26 views
5

我正在使用Mandrill基於模板將電子郵件發送到聯繫人列表。我想跟蹤聯繫人是否回覆了我的電子郵件,爲此,我想檢查我發送的電子郵件的Message-Id是否出現在新郵件的In-Reply-To標題字段中。使用Mandrill設置消息ID以用於批量電子郵件

問題是我必須手動生成並設置Message-Id,因爲Mandrill只給我他們的內部_id。但是,由於我同時向各個聯繫人發送電子郵件,因此我將preserve_recipients設置爲false。但後來我只能設置一個Message-Id,因此會變成不是全球唯一的

這裏是我送一個例子JSON:

{ 
"from_email": "[email protected]", 
"from_name": "Its Me", 
"headers": {"Message-Id": ["<[email protected]>"]}, 
"subject": "Thesubject", 
"text": "Thebody", 
"to": [ 
    { 
     "email": "[email protected]", 
     "name": "John", 
     "type": "to" 
    }, 
    { 
     "email": "[email protected]", 
     "name": "Patrick", 
     "type": "to" 
    } 
], 
"preserve_recipients": false 

}

在這種情況下,兩個消息將被髮送,但他們會具有相同的Message-Id。如果我沒有設置它,Mandrill會自動分配一個,但是我無法檢索它。

任何想法我可以做什麼?也許我的整個方法是不正確的...

回答

3

我結束了遍歷所有收件人,並在每次迭代產生一個新的Message-Id,並在同一時間發送一個電子郵件。可能不是最優的,因爲我沒有使用Mandrill批量功能,但至少現在我可以存儲電子郵件ID。

import email 
import mandrill 

mandrill_client = mandrill.Mandrill('YOUR_MANDRILL_KEY') 

for recipient in recipients: 
    # Generate RFC 2822-compliant Message-ID header 
    message_id = email.Utils.make_msgid() 
    m = { 
     "headers": {"Message-Id": [message_id], 
     "from_email": "[email protected]", 
     "from_name": "Its Me", 
     "subject": "The subject", 
     "text": "The body", 
     "to": [{"email": recipient["email"], 
       "name": recipient["name"], 
       "type": "to"}], 
     "track_clicks": True, 
     "track_opens": True 
    } 
    result = mandrill_client.messages.send(message=m) 
+0

你可以發佈你的'make_msgid()'函數,或者給你一些關於你如何創建消息ID的細節?我無法在Docs –

+1

中找到它的格式。它使用Python內置的'email'庫,更具體地說是['utils.make_msgid()'](http://doc.hc2.ch/python-2.7.9-docs-html/library/email)。 util.html#email.utils.make_msgid)函數,該函數創建[RFC 2822](http://tools.ietf.org/html/rfc2822.html)兼容的Message-ID頭。 – Victor

+0

有道理。謝謝。 –

0

mandrill documentation您可以從消息的返回值檢索_id。

doc

+0

我知道,但是這個信息只在曼德里爾內部,當我收到郵件的回覆時會丟失。 – Victor

+0

然後使用webhooks,我將它們用於我的郵件系統,它們工作得很好 –

+0

似乎有一個來自mandrill支持的有用答案:http://stackoverflow.com/a/29010839/4940233 –

相關問題