Flask-mail创建独立邮件而不是电子邮件线程

问题描述 投票:0回答:2

我正在创建一个电子邮件验证服务并使用Flask-mail。每当用户注册时,我都会发送一个唯一的验证链接来验证电子邮件地址。

根据我的代码,电子邮件主题(验证您的电子邮件地址...)保持不变,而每次发送新邮件时验证链接都会更改。但是,每次我向同一收件人发送新邮件时,该电子邮件最终都会在用户的Gmail收件箱中以电子邮件形式发送。

从附加的图像中,您可以看到三封已发送的邮件已成为电子邮件主题。

如何配置Flask-mail API以发送独立邮件而不是创建电子邮件线程?

我正在浏览documentation和StackOverflow,但找不到任何解决方案。


代码供参考

mail = Mail(app=current_app)

# embedding a new validation link in the message body.
message_body = VERIFY_ACC_BODY.format(url_for('auth.verify_user_email', 
user_token=token, _external=True))

email_notification = Message(subject=VERIFY_ACC_SUBJECT,
                                 recipients=[user.user_id],
                                 body=message_body)

# creates email threads instead of independent emails. Why?
mail.send(email_notification)

注意:请不要建议更改每封邮件的电子邮件主题。这不是我正在寻找的解决方案。

python flask gmail-api email-verification flask-mail
2个回答
1
投票

很遗憾,您正在尝试对抗主要基于电子邮件主题行的Gmail功能。 More about this

如果每封邮件符合以下条件,则会对电子邮件进行分组

  • 与先前消息相同的收件人,发件人或主题。
  • 与前一条消息具有相同ID的引用标头。
  • 在上一条消息的一周内发送。

要防止分组电子邮件:

  • 为您不想分组的每条消息创建一个新主题。
  • 使用与先前消息不匹配的唯一引用标头值发送每封邮件。

您可以尝试在extra_headers={"references": "{{ unique value }}"}中使用email_notification = Message(...)来尝试避免使用Gmail的线程功能。


0
投票

注意:此答案自2019年4月11日起生效。将来,GmailFlask-mail可能会更改少数政策或更新其API。因此,这个答案将来可能无效。


我只是将这个答案留在这里,希望将来可以为人们节省一些时间。

除了@ VizslaVizsla的答案之外,尽管经过反复测试,extra_headers={...}的设置似乎并不起作用。尽管如此,电子邮件仍会分组。

几年前,一个similar question发布在StackExchange上。

到目前为止,我尝试了各种不同的extra_headers。他们都没有阻止分组。

from uuid import uuid4
# uuid used to generate a unique identifier for every mail.

extra_headers={'references': str(uuid4())} # Didn't work
extra_headers={'Message Id': str(uuid4())} # Didn't work
extra_headers={'Message-Id': str(uuid4())} # Gmail message id. Didn't work

看起来您必须更改主题标题或收件人以防止分组。我没有通过更改CC或BCC列表进行测试。如果您有时间或耐心,请随时测试并在此发布您的观察结果。

© www.soinside.com 2019 - 2024. All rights reserved.