为啥对我的 SMTP 发送的 gmail 邮件的回复没有线程化?
Posted
技术标签:
【中文标题】为啥对我的 SMTP 发送的 gmail 邮件的回复没有线程化?【英文标题】:Why are replies to my SMTP-sent gmail messages not threaded?为什么对我的 SMTP 发送的 gmail 邮件的回复没有线程化? 【发布时间】:2011-09-01 20:57:50 【问题描述】:我正在使用以下 Python sn-p 通过 SMTP 发送许多类似的电子邮件:
def send(from_, to, body):
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.ehlo()
server.login('michael@gmail.com', password)
msg = '''\
From: %s
To: %s
Subject: %s
%s''' % (from_, to.encode('utf-8'), "Hello", body.encode('utf-8'))
server.sendmail(from_, to, msg)
server.quit()
这些消息是对话中的第一条消息。 Strangley,对这些消息的回复不会串接到原始消息的对话中。
回复在我的收件箱中作为单独的邮件返回,主题 =“回复:你好”,与原件没有联系。 (偶尔会有一个被正确穿线,这更奇怪。)
我已验证这些(非线程)回复有一个 References: 字段,该字段引用已发送邮件的 Message-ID 字段,该字段由 GMail 自动生成。
知道我做错了什么吗?
【问题讨论】:
【参考方案1】:查看References:
标头。它包含线程中先前的Message-ID:
标头链,通常用于线程。自己指定Message-ID:
通常是个好主意,如果您跟踪以前使用过的,可以在References:
标头中使用它们来强制执行线程。
Message-ID
应该是全局唯一的。它们通常是这样构造的,但这不是必需的。
Message-ID: unixtimestamp.somerandomval@sending-hostname
【讨论】:
谢谢 Michael -- 我会尝试添加 Message-ID 标头。如果他们的线程正确,我会接受你的回答。 @Michael:谢谢。没有以前的消息:通过 SMTP 发送的唯一消息是发起对话的消息。其余的对话发生在 gmail 的网络界面中。 不幸的是,当我通过 SMTP 发送邮件时,我看到 GMail 会自动将 Message-ID 添加到我的邮件中;无论我是否明确指定,都不会更改传出消息。所以我认为这不是罪魁祸首。还有其他想法吗? 此外:未正确线程化的回复确实有一个 References: 标头,指的是最初发送的消息的消息 ID。 GMail 是否会被许多具有相同主题的类似电子邮件弄糊涂,并放弃尝试正确线程?以上是关于为啥对我的 SMTP 发送的 gmail 邮件的回复没有线程化?的主要内容,如果未能解决你的问题,请参考以下文章
使用 .NET core 2.2 中的 MailKit SMTP 客户端通过 Gmail SMTP 发送邮件对我不起作用
使用 Gmail SMTP OAUTH 从 asp.net 发送电子邮件 [重复]