获取已发送邮件的MessageID最简单/干净的方法是什么?

7 投票
2 回答
3180 浏览
提问于 2025-04-16 02:42

我想保存一封已发送邮件的消息ID,这样我就可以在以后的邮件中用它来帮助邮件的关联。

我在root/django/trunk/django/core/mail.py文件的第55行左右看到了消息ID是怎么生成的。

我在想,除了直接复制粘贴到一个新的后端模块并返回这个值之外,还有没有更好的方法来收集这个值。也许这样做就是最好的方法?

2 个回答

1

并不是所有的后端都支持你自己设置消息 ID(比如 SES 会设置它自己的消息 ID,并在发送响应中返回这个 ID)。如果你使用较新的(大约 1.1 版本?)EmailMessage 类,你可以在调用 .send() 方法后,从实例中提取返回的消息 ID,例如:

e=EmailMessage(
            subject,
            content,
            from_email,
            recipient_list,
            headers = headers,
        )
 e.send()
 message_id = e.extra_headers.get('Message-Id',None)
12

好的,我发现我在查看一些非常老旧的代码。我应该可以调用 django.core.mail.message.make_msgid() 这个函数,然后自己填充邮件的头部信息,最后再发送邮件。

撰写回答