#python #gmail #imap #imaplib
#python #gmail #imap #imaplib
Вопрос:
Я отправляю множество похожих электронных писем через 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()
Эти сообщения являются первыми сообщениями в разговоре. Странно, ответы на эти сообщения не передаются в потоковом режиме в диалог исходного сообщения.
Ответ возвращается в виде отдельного сообщения в моем почтовом ящике, subject = «Re: Привет», без привязки к оригиналу. (Очень редко одно из них будет обработано должным образом, что еще более странно.)
Я проверил, что в этих (непоточных) ответах есть поле References:, которое ссылается на поле Message-ID отправленного сообщения, которое было автоматически сгенерировано GMail.
Есть идеи, что я делаю не так?
Ответ №1:
Посмотрите на References:
заголовок. Он содержит цепочку предыдущих Message-ID:
заголовков в потоке и обычно используется для потоковой передачи. Обычно рекомендуется указывать их Message-ID:
самостоятельно, и если вы отслеживаете ранее использованные, вы можете использовать их в References:
заголовке для обеспечения потоковой передачи.
Message-ID
Должны быть глобально уникальными. Они часто создаются примерно так, но это не является обязательным требованием.
Message-ID: unixtimestamp.somerandomval@sending-hostname
Комментарии:
1. Спасибо, Майкл — Я попробую добавить заголовок Message-ID. Если они потоковые должным образом, я приму ваш ответ.
2. @Michael: спасибо. Предыдущих сообщений нет: единственное сообщение, отправленное по SMTP, является инициирующим диалог. Остальная часть диалога происходит в веб-интерфейсе gmail.
3. К сожалению, я вижу, что GMail автоматически добавляет идентификатор сообщения к моему сообщению, когда оно отправляется по SMTP; независимо от того, указываю я его явно или нет, исходящее сообщение не меняется. Так что я не думаю, что это виновник. Есть еще идеи?
4. Кроме того: ответы, которые обрабатываются некорректно, имеют заголовок References:, ссылающийся на идентификатор сообщения первоначально отправленного сообщения. Может быть, GMail запутался из-за множества похожих электронных писем с идентичными темами и отказался от попыток правильно передавать потоки?