Поле скрытой копии в SMTP [показывает / не показывает] проблема - PullRequest
4 голосов
/ 03 июля 2011

Я пытаюсь использовать smtplib из python для отправки через gmail электронного письма с адресами 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], что правильно.Но

я хотел бы, чтобы каждый адрес скрытой копии имел поле скрытой копии со своим собственным адресом, как описано в здесь для веб-интерфейса 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 Ответ

1 голос
/ 03 июля 2011

Я полагаю, что 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.)

...