На самом деле, код работает просто отлично. Он создает правильную почту со всеми правильными заголовками, включая скрытую копию.
Как почтовый клиент отображает скрытую копию?
Почтовый клиент (например, Python или MS Outlook через IMAP или MAPI в моем случае) решает, следует ли и как отображать bcc-заголовки. Например, Outlook не отображает заголовки скрытой копии из папки IMAP. Это функция, позволяющая скрыть получателей скрытой копии от друг друга, если они не были удалены ранее из почты (из стандарта неясно, разрешено ли одному получателю скрытой копии видеть всех остальных получателей скрытой копии, см. Wikipedia ).
Кто обрабатывает скрытую копию при отправке электронного письма?
Предположим теперь, что мы составили сообщение в почтовом клиенте и сохранили его в папке IMAP или MAPI. Сервер, предоставляющий папки IMAP / MAPI, оставляет черновик сообщения без изменений. То, что происходит с заголовками bcc при отправке почты, зависит от реализации и может зависеть как от почтового клиента, так и от агента пересылки почты (например, MS Exchange Server в моем случае). Короче говоря, люди не согласны с тем, отвечает ли почтовый клиент или агент пересылки почты за удаление заголовков скрытой копии. Однако, похоже, что большинство разработчиков считают, что почтовый клиент занимается тем, что агент пересылки почты не касается почты (например, MS Exchange, MS SMTP, Exim, OpenWave). В этом случае агент пересылки почты отправляет электронную почту получателю, как определено в RCPT TO:
сообщения SMTP , и в противном случае оставляет сообщение электронной почты без изменений. Однако некоторые другие агенты пересылки почты удаляют заголовки bcc из писем (например, sendmail, Lotus Notes). Очень подробное обсуждение можно найти в списке рассылки exim, начиная с здесь .
В случае MS Outlook и MS Exchange MS Outlook никогда не отправляет скрытую копию (но отправляет отдельные электронные письма для каждого получателя скрытой копии), а MS Exchange не касается заголовков электронной почты, но отправляет полную электронную почту (возможно, включая получателей скрытой копии) на получатели определены в RCPT TO:
.
Заключение
Я не понял, что для bcc нет гарантированного поведения и что обычно клиент обрабатывает bcc. Я перепишу свой код Python, чтобы перебрать получателей скрытой копии и сгенерировать одно письмо для каждого получателя скрытой копии.