为什么回复我的SMTP发送的gmail消息没有线程?

时间:2011-05-25 15:12:38

标签: python gmail imap imaplib

我使用以下Python代码段通过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,对这些消息的回复是没有线程到原始消息的对话中。

回复在我的收件箱中以单独的邮件形式返回,主题=“Re:Hello”,与原始无关。 (偶尔会有一个正确穿线,这甚至更奇怪。)

我已经验证这些(非线程)回复有一个References:字段,该字段引用已发送邮件的Message-ID字段,该字段由GMail自动生成。

知道我做错了吗?

1 个答案:

答案 0 :(得分:6)

查看References:标题。它包含线程中先前Message-ID:标头的链,通常用于线程。通常最好自己指定Message-ID:,如果您跟踪以前使用过的References:,可以在Message-ID标题中使用它们来强制执行线程。

Message-ID: unixtimestamp.somerandomval@sending-hostname 应该是全球唯一的。它们通常被构造成这样的东西,但它不是必需的。

{{1}}