python – SMTP中的密件抄送字段[显示/不显示]问题
作者:互联网
我正在尝试使用python的smtplib通过gmail发送一封带有密件抄送地址的电子邮件.
我用这个代码:
#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]中所有地址的相同信息,这是对的.但
我想要发生的是每个密件抄送地址都有一个带有自己地址的密件抄送字段,就像here中描述的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是如何做到的
解决方法:
我的猜测是,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地址.只是为了澄清剂量的作用:fromAddr和toAddr参数用于包络(server.sendmail的第一个和第二个参数). to,cc和(可选)bcc参数用于msg中的标头. (您的代码不会添加密件抄送,如果提供了可选参数密件抄送,则需要添加密码.)
(编辑:我删除了关于它可能使用X-Bcc的可能性的评论.我只是尝试了它,它的工作原理如上所述.我还修复并澄清了dosend的描述.)
标签:python,smtp,gmail,bcc 来源: https://codeday.me/bug/20190710/1419167.html