Поле скрытой копии в 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.)

Другие вопросы по тегам