2015-05-28 24 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 –

相关问题