为什么我通过SMTP发送的Gmail邮件回复不成线程?
我正在通过SMTP发送很多类似的邮件,使用下面的Python代码:
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()
这些邮件是对话的第一条消息。奇怪的是,回复这些邮件的内容没有和原始消息关联在一起。
当我收到回复时,它会作为一条独立的消息出现在我的收件箱里,主题是“Re: Hello”,与原始邮件没有任何关联。(偶尔会有一条回复正确地关联上,这就更奇怪了。)
我确认这些(没有关联的)回复中有一个“References:”字段,里面提到了我发送邮件时的“Message-ID”,这个ID是GMail自动生成的。
你觉得我哪里做错了吗?
1 个回答
6
看看 References:
这个标题。它里面包含了这个讨论串中之前的 Message-ID:
标题的链条,通常是用来进行线程管理的。自己指定 Message-ID:
通常是个好主意,如果你能记住之前用过的那些编号,就可以在 References:
中使用它们来保持线程的关联。
Message-ID
应该是全球唯一的。它们通常是像下面这样构造的,但这并不是强制要求。
Message-ID: unixtimestamp.somerandomval@sending-hostname