Python smtp(Postfix MTA)邮件:收件人打开发送的邮件时得到通知

时间:2019-05-14 21:01:17

标签: python email

我正在构建一个Python 3.7 脚本,以通过我公司的SMTP服务器自动发送大约700封电子邮件。所有发送都工作正常,但是需要提醒我哪些收件人打开了邮件,因此可以在列表中将其突出显示为有效。任何对此事有经验的人都可以解释它的工作原理吗?

尽管对于标题选项“ Disposition-Notification-To”存在​​一些疑问,但没有一个可以真正解释其工作原理。

  1. 提示读者确认阅读消息是谁的责任?
  2. 如果读者确认了提示,谁的责任是将电子邮件发送回我的地址?
  3. 还有其他选择可以实现这一目标吗?

由于有关此问题的每个问题都涉及信息少和/或使用了较旧的Python版本,因此我打算针对此问题收集有关此事的可靠和更新的信息源。

def build_message(address):
    mail = EmailMessage()

    mail['From'] = MY_EMAIL
    mail['To'] = address
    mail['Subject'] = "This is a TEST"
    mail['Disposition-Notification-To'] = MY_EMAIL
    mail.set_content('Hello this is a test')

    image_cid = make_msgid(domain='xyz.com')
    mail.add_alternative("""\
                <html>
                    <body>
                        <p>This is a test.</p>
                        <img src="cid:{image_cid}">
                    </body>
                </html>
                """.format(image_cid=image_cid[1:-1]), subtype='html')

    with io.open(attachment_path, 'rb') as img:
        maintype, subtype = mimetypes.guess_type(img.name)[0].split('/')
        mail.get_payload()[1].add_related(img.read(),
                                          maintype=maintype,
                                          subtype=subtype,
                                          cid=image_cid)

    return mail

这是我的邮件构建功能,结果通过SMTP打开的会话(smtplib)发送。尽管放置了“ Disposition-Notification-To”标头,但没有什么不同。

编辑:我公司的邮件UI提供了“通知已读”选项,因此我知道我的凭据可以这样做(GMAIL标准帐户不允许阅读通知)。

编辑2:我的公司使用Postfix作为MTA。

1 个答案:

答案 0 :(得分:0)

我认为您公司的smtp提供商应提供一个API,您可以从中获取每封已发送电子邮件的传递状态报告。

根据我的经验, 在我们公司中,我们使用sendgrid的smtp服务器发送邮件,一旦通过设置启用了发送状态报告,sendgrid将为我们提供一个API,用于读取每封已发送电子邮件的状态报告。这些报告将远程发布在您在设置中提供的网页中。这些报告以json格式发布,如果用户打开了电子邮件或电子邮件从该报告转到了垃圾邮件文件夹,则可以获取信息。

因此,我认为您还应该询问SMTP提供商如何使用他们的服务。