Мне нужно в целях тестирования заполнить несколько сотен почтовых ящиков различными сообщениями, и я собирался использовать для этого smtplib. Но, помимо прочего, мне нужно иметь возможность отправлять сообщения не только в определенные почтовые ящики, но и в CC и BCC. Не похоже, что smtplib поддерживает CC-ing и BCC-ing при отправке электронных писем.
Ищете предложения, как сделать CC или BCC отправку сообщений из скрипта python.
(И - нет, я не создаю скрипт для рассылки спама кому-либо за пределами моей тестовой среды.)
Ключевым моментом является добавление получателей в список идентификаторов электронной почты в вызове sendmail.
источник
msg['BCC']
выключенным - он показывает вашего скрытого отправителя и не влияет на то, отправлено ему сообщение или нет (аргументы дляsendmail
этого).Не добавляйте заголовок скрытой копии.
Смотрите это: http://mail.python.org/pipermail/email-sig/2004-September/000151.html
И это: "" "Обратите внимание, что второй аргумент sendmail (), получатели, передается в виде списка. Вы можете включить любое количество адресов в список, чтобы сообщение было доставлено каждому из них по очереди. Поскольку конверт информация отделена от заголовков сообщений, вы можете даже скрыть кого-то, включив их в аргумент метода, но не в заголовок сообщения. "" "из http://pymotw.com/2/smtplib
источник
Начиная с Python 3.2, выпущенного в ноябре 2011 года, smtplib имеет новую функцию
send_message
вместо justsendmail
, которая упрощает работу с To / CC / BCC. Взяв примеры официальных писем Python с небольшими изменениями, мы получаем:Использование заголовков работает нормально, потому что send_message уважает BCC, как указано в документации :
С
sendmail
обычным было добавить заголовки CC в сообщении, делать что - то , такие как:Или
Проблема в том, что функция sendmail обрабатывает все эти заголовки одинаково, что означает, что они будут отправлены (явно) всем пользователям To: и BCC:, что противоречит целям BCC. Решение, как показано во многих других ответах здесь, заключалось в том, чтобы не включать BCC в заголовки, а вместо этого только в список отправленных писем
sendmail
.Предостережение заключается в том, что
send_message
требуется объект Message, то есть вам нужно будет импортировать класс из,email.message
а не просто передавать строки вsendmail
.источник
Различие между TO, CC и BCC происходит только в текстовых заголовках. На уровне SMTP все являются получателями.
TO - есть заголовок TO: с адресом этого получателя
CC - есть заголовок CC: с адресом получателя.
BCC - этот получатель вообще не упоминается в заголовках, но все равно является получателем.
Если у вас есть
У вас три получателя. Заголовки в теле письма будут включать только TO: и CC:
источник
Вы можете попробовать MIMEText
затем отправьте msg.as_string ()
https://docs.python.org/3.6/library/email.examples.html
источник
У меня это не сработало, пока я не создал:
и затем добавил копию в [список] получателей, например:
источник
Ничего из вышеперечисленного у меня не сработало, так как у меня было несколько получателей как в «Кому», так и в «Копия». Итак, я попробовал, как показано ниже:
и расширьте 'получателей' с 'cc_recipients' и отправьте почту тривиальным способом
источник