使用Mandrill为批量邮件设置Message-Id

6
我正在使用Mandrill基于模板向联系人列表发送邮件。我想要追踪联系人是否回复了我的邮件,为此,我想要检查我发送的邮件的Message-Id是否出现在新邮件的In-Reply-To头字段中。
问题是,由于Mandrill仅提供其内部_id,因此必须手动生成和设置Message-Id。然而,由于我同时向多个联系人发送邮件,所以我将preserve_recipients设置为false。但是这样我只能设置一个Message-Id,因此会不再是全局唯一的
以下是我正在发送的示例JSON:
{
"from_email": "itsme@email.com",
"from_name": "Its Me",
"headers": {"Message-Id": ["<20150528161426.4265.93582@email.com>"]},
"subject": "Thesubject",
"text": "Thebody",
"to": [
    {
        "email": "john@email.com",
        "name": "John",
        "type": "to"
    },
    {
        "email": "patrick@email.com",
        "name": "Patrick",
        "type": "to"
    }
],
"preserve_recipients": false

在这种情况下,将发送两条消息,但它们将具有相同的Message-Id。如果我不设置它,Mandrill将自动分配一个,但是我无法检索它。

你有什么想法吗?也许我的整个方法都不正确...

2个回答

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": "itsme@email.com",
        "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)

你能发布你的 make_msgid() 函数或者详细说明一下你是如何创建消息 ID 的吗?我在文档中找不到它的格式。 - Ayrton Senna
1
当然可以。这个程序是使用Python内置的email库编写的,更具体地说,使用了utils.make_msgid()函数,该函数创建了符合RFC 2822标准的Message-ID头部。 - Victor
有道理。谢谢。 - Ayrton Senna

0

我知道,但这些信息只是Mandrill内部的,并且在我收到电子邮件回复时将会丢失。 - Victor
然后使用Webhooks,我在我的邮件系统中使用它们,它们非常有效。 - Fran Lupión
似乎从Mandrill支持中得到了一个有用的答案:http://stackoverflow.com/a/29010839/4940233 - Fran Lupión
您可以使用入站电子邮件 Webhook https://mandrill.zendesk.com/hc/en-us/articles/205583197-Inbound-Email-Processing-Overview - Fran Lupión
谢谢。我可以访问“Message-Id”和最重要的“In-Reply-To”头字段,但是当我通过Mandrill发送消息时,我没有收到原始的“Message-Id”,因此无法将其与我收到的回复进行比较。 - Victor
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接