Поле скрытой копии в SMTP [показывает / не показывает] проблема
Я пытаюсь использовать smtplib в Python для отправки по электронной почте электронной почты с адресами bcc. Я использую этот код:
#imports etc...
fromAddr = sender@origin.com
to = [ recpt1@destinationTo.com ]
cc = [ recpt2@destinationCc.com ]
bcc = [ recpt3@destinationBcc.com, recpt4@destinationBcc.com ]
server = SMTP( "smtp.gmail.com", 587)
#starttls, login, etc..
content = "Hello, this is a message."
msg = "From: %s\r\nTo:%s\r\nCc: %s\r\n\r\n%s" % ( from, to, cc, content )
server.sendmail( fromAddr, to + cc + bcc, msg )
#server.quit() etc...
-> Когда я захожу в соответствующие почтовые ящики, я получаю одно и то же сообщение для всех адресов в [to+cc+bcc], что верно. Но
я хотел бы, чтобы каждый адрес bcc имел поле bcc со своим собственным адресом, как описано здесь для веб-интерфейса gmail.
Вот что я хочу сделать:
Копия и Входящие:
To: recpt1@destinationTo.com
From: sender@origin.com
Cc: recpt2@destinationCc.com
(...)
recpt3 Входящие:
To: recpt1@destinationTo.com
From: sender@origin.com
Cc: recpt2@destinationCc.com
Bcc: recpt3@destinationBcc.com
(...)
recpt4 Входящие:
To: recpt1@destinationTo.com
From: sender@origin.com
Cc: recpt2@destinationCc.com
Bcc: recpt4@destinationBcc.com
(...)
Кому-нибудь удалось заставить это работать? Я искал в документах SMTP RFC и ничего не нашел, я не понимаю, как это может сделать Gmail
1 ответ
Я предполагаю, что gmail выполняет отдельный сеанс SMTP для каждого получателя BCC. Если бы все между вашими двумя комментариями было функцией dosend(fromAddr, toAddr, content, to, cc, bcc=None)
Вы могли бы сделать что-то вроде этого:
dosend(fromAddr, to+cc, content, to, cc)
for t in bcc:
dosend(fromAddr, t, content, to, cc, t)
Это послало бы это однажды к to
а также cc
адрес (а), а затем отправить его снова каждому bcc
адрес индивидуально, с соответствующим заголовком скрытой копии. Просто чтобы уточнить, что делает дозенд: fromAddr
а также toAddr
аргументы для конверта (первый и второй аргументы server.sendmail
). to
, cc
и (необязательно) bcc
аргументы для заголовков в msg
, (Ваш код не добавляет Bcc, вам нужно добавить это, если необязательный аргумент bcc
предоставлен.)
(Изменить: я удалил свои комментарии о возможности использования X-Bcc. Я только что попробовал, и он работает, как описано выше. Я также исправил и уточнил описание dosend
.)