отправляемые сообщения Python имеют пустое поле TO - PullRequest
0 голосов
/ 29 мая 2019

У меня есть скрипт Python, который рассылает электронные письма.Письма отправляются без проблем.

Однако, когда я получаю письма и открываю их, в поле «to:» не отображаются получатели.Это просто пусто.Я хочу показать всем получателям.И поскольку я не использую конфигурацию "bcc" в своем скрипте, я озадачен тем, как это может быть.

Вот код, который я использую:

#!/usr/bin/env python

you = [ "MyEmail1@MyEmail.com", "MyEmail2@MyEmail.com" ]
for eachrecord in fformatErrMessage:
    # Preparing all variables #
    msg = MIMEMultipart()
    msg['Subject'] = subjectMsg
    part1 = MIMEText(text, 'plain')
    part2 = MIMEText(html, 'html')
    msg.attach(part1)
    msg.attach(part2)
    s = smtplib.SMTP('localhost')
    s.sendmail(me, you, msg.as_string())
    s.quit()

Я пытался заменить вас на:

you = "MyEmail1@MyEmail.com"

, думая, что, возможно, проблема в списке - но этоне сработало.

1 Ответ

2 голосов
/ 29 мая 2019

При отправке электронных писем серверы не смотрят на поле To: -Field. Вместо этого почтовые серверы имеют отдельный способ передачи адресов получателей, который иногда называют «конвертом», который они используют для маршрутизации и доставки почты. Клиент никогда не получает этот конверт, вместо этого он использует поле To: в заголовках сообщений.

Вызов sendmail () просто устанавливает адреса конверта SMTP. Если вы хотите, чтобы поле To: отображалось в самой почте, вы должны установить соответствующий заголовок:

msg['To'] = "foo@bar.com"

Кстати, как работает BCC: адреса в конверте просто не повторяются в заголовках сообщений.

...