我试图使用python的smtplib通过gmail发送一封包含bcc地址的电子邮件。
我使用这个代码:
#imports etc...
fromAddr = [email protected]
to = [ [email protected] ]
cc = [ [email protected] ]
bcc = [ [email protected], [email protected] ]
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]中,wich是对的。但是
我希望每个bcc地址都有一个bcc字段,其中有自己的地址,就像在gmail的web界面中的here中所描述的那样。
这就是我希望完成的:
抄送至收件箱:
To: [email protected]
From: [email protected]
Cc: [email protected]
(...)
Recpt3收件箱:
To: [email protected]
From: [email protected]
Cc: [email protected]
Bcc: [email protected]
(...)
recpt4收件箱:
To: [email protected]
From: [email protected]
Cc: [email protected]
Bcc: [email protected]
(...)
有人成功地把这个工作了吗?我一直在看smtp的rfc文档,但什么也没找到,我不明白gmail是怎么做到的。
最佳答案
我的猜测是gmail会为每个BCC收件人执行单独的SMTP会话如果两条评论之间的所有内容都是函数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头分别再次发送到每个bcc
地址为了澄清dosend的作用:fromAddr
和toAddr
参数是信封的参数(第一个和第二个参数是server.sendmail
)to
、cc
和(可选)bcc
参数用于msg
中的头。(您的代码没有添加bcc,如果提供了可选参数bcc
,则需要添加bcc。)(编辑:我删除了关于它可能使用X-Bcc的评论我刚刚试了一下,效果如上所述我还修正并澄清了
dosend
的描述。