使用 Mandrill 设置 Message-Id 用于群发电子邮件
Set Message-Id with Mandrill for bulk emails
我正在使用 Mandrill 向基于模板的联系人列表发送电子邮件。我想跟踪联系人是否回复了我的电子邮件,为此,我想检查我发送的电子邮件的 Message-Id
是否出现在 In-Reply-To
header 字段中新消息。
问题是我必须手动生成和设置 Message-Id
,因为 Mandrill 只给我它们的内部 _id
。但是,由于我同时向多个联系人发送电子邮件,因此我将 preserve_recipients
设置为 false
。但是我只能设置一个Message-Id
,因此会变成not globally unique.
这是我要发送的示例 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会自动分配一个,然后我就找不回来了
知道我能做什么吗?也许我的整个方法是不正确的...
从 mandrill documentation 您可以从消息的 return 值中检索 _id。
我最终遍历所有收件人并在每次迭代时生成一个新的 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)
我正在使用 Mandrill 向基于模板的联系人列表发送电子邮件。我想跟踪联系人是否回复了我的电子邮件,为此,我想检查我发送的电子邮件的 Message-Id
是否出现在 In-Reply-To
header 字段中新消息。
问题是我必须手动生成和设置 Message-Id
,因为 Mandrill 只给我它们的内部 _id
。但是,由于我同时向多个联系人发送电子邮件,因此我将 preserve_recipients
设置为 false
。但是我只能设置一个Message-Id
,因此会变成not globally unique.
这是我要发送的示例 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会自动分配一个,然后我就找不回来了
知道我能做什么吗?也许我的整个方法是不正确的...
从 mandrill documentation 您可以从消息的 return 值中检索 _id。
我最终遍历所有收件人并在每次迭代时生成一个新的 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)