Python SMTP: письма объединяются в одно - PullRequest
0 голосов
/ 12 мая 2018

Целью является отправка электронного письма двум людям одновременно.Я готовлю электронное письмо.Я перебираю пары и отправляю электронные письма.

У меня есть следующий код.

msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = 'SUBJECT'
msgRoot['From'] = formataddr(('SENDER NAME', strFrom))
msgRoot.preamble = 'This is a multi-part message in MIME format.'

# Encapsulate the plain and HTML versions of the message body in an
# 'alternative' part, so message agents can decide which they want to display.
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)

msgText = MIMEText('PLAINTEXT')
msgAlternative.attach(msgText)

# We reference the image in the IMG SRC attribute by the ID we give it below
with open('index.htm', 'r') as fp:
    msgText = MIMEText(fp.read(), 'html')
msgAlternative.attach(msgText)

# This example assumes the image is in the current directory
with open('download.png', 'rb') as fp:
    msgImage = MIMEImage(fp.read())

# Define the image's ID as referenced above
msgImage.add_header('Content-ID', '<imagesss>')
msgRoot.attach(msgImage)


conn = smtplib.SMTP('email-smtp.us-east-1.amazonaws.com', 587)
conn.starttls()
conn.login('user', 'password')
for pairs in paired_users:
    strTo = ', '.join(pairs)
    msgRoot['To'] = strTo
    print strTo
    conn.sendmail(strFrom, strTo, msgRoot.as_string())
conn.quit()

Как вы можете ясно видеть, что электронные письма отправляются отдельно.

Но по какой-то причине, когда я получаю электронное письмо, все в списке.Как будто было отправлено одно электронное письмо с объединенным списком отправки.

Можно ли объяснить такое поведение и сделать его невозможным?Какая-то настройка на SMTP-сервере или какая-то настройка в заголовке сообщения?

1 Ответ

0 голосов
/ 12 мая 2018

Линия:

msgRoot['To'] = strTo

не делает то, что вы думаете - он не перезаписывает существующий заголовок «Кому», он добавляет другой. Из документов для Message.__setitem__:

Обратите внимание, что это не перезаписывает или удаляет любой существующий заголовок с одно и то же имя Если вы хотите убедиться, что новый заголовок является единственным один присутствующий в сообщении с именем поля name, удалите поле во-первых, например ::

>>> del msg['subject']

>>> msg['subject'] = 'Python roolz!'

...