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

Posted

技术标签:

【中文标题】使用 Mandrill 为批量电子邮件设置 Message-Id【英文标题】:Set Message-Id with Mandrill for bulk emails 【发布时间】:2015-08-11 07:04:49 【问题描述】:

我正在使用 Mandrill 基于模板向联系人列表发送电子邮件。我想跟踪联系人是否回复了我的电子邮件,为此,我想检查我发送的电子邮件的Message-Id 是否出现在新邮件的In-Reply-To 标头字段中。

问题是我必须手动生成和设置Message-Id,因为 Mandrill 只给我他们内部的_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 会自动分配一个,但是我无法检索它。

知道我能做什么吗?也许我的整个方法都不正确......

【问题讨论】:

【参考方案1】:

我最终遍历所有收件人并在每次迭代中生成一个新的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 的?我在文档中找不到它的格式 当然。它是使用 Python 的内置 email 库,更具体地说是 utils.make_msgid() 函数创建的,该函数创建符合 RFC 2822 的 Message-ID 标头。 有道理。谢谢。【参考方案2】:

从mandrill documentation,您可以从消息的返回值中检索_id。

【讨论】:

我知道,但此信息仅在 Mandrill 内部,当我收到电子邮件回复时会丢失。 然后使用 webhook,我将它们用于我的邮件系统,它们工作得很好 山魈支持似乎有一个有用的答案:***.com/a/29010839/4940233 我正在使用 webhook 获取 sentopenclicked 状态,但是没有 回复事件,对吧?是的,我使用 Mandrill 支持答案来设置 Message-Id 标头字段,但在批量电子邮件的情况下,将为所有邮件设置一个 id,这不是一个好主意... 您可以使用入站电子邮件 webhook mandrill.zendesk.com/hc/en-us/articles/…

以上是关于使用 Mandrill 为批量电子邮件设置 Message-Id的主要内容,如果未能解决你的问题,请参考以下文章

使用 djrill 发送 html 批量电子邮件时,如何获得每条消息的 mandrill 响应?

如何使用 mandrill 发送 mailchimp 模板?

使用 Mandrill 发送邮件。异步不起作用

将 Mandrill 帐户合并到 Mailchimp 后,如果我的发送域未设置为接收电子邮件,我该如何接受验证电子邮件?

抄送收件人的 Mandrill 合并变量不起作用

交易和批量电子邮件工作流程