SMTP 中的密件抄送字段 [ 显示/不显示 ] 问题
我正在尝试使用 python 的 smtplib 通过 gmail 发送一封带有密件抄送地址的电子邮件。 我使用这段代码:
#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] 中所有地址的相同消息,这是正确的。但
我希望发生的是每个密件抄送地址都有一个密件抄送字段,其中包含自己的地址,就像 此处查看 gmail 的网络界面。
这就是我希望完成的任务:
抄送和收件人收件箱:
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 是如何做到这一点的
I'm trying to use python's smtplib to send, via gmail, an email with bcc addresses.
I use this code:
#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...
-> When I go to the respective Inboxs I get the same message for all the addresses in [to+cc+bcc], wich is right. But
what i would like to happen was that each bcc address got a bcc field with its own address in it, just like is described in here for the web interface of gmail.
This is what I wish to accomplish:
Cc and To Inboxes:
To: [email protected]
From: [email protected]
Cc: [email protected]
(...)
recpt3 Inbox:
To: [email protected]
From: [email protected]
Cc: [email protected]
Bcc: [email protected]
(...)
recpt4 Inbox:
To: [email protected]
From: [email protected]
Cc: [email protected]
Bcc: [email protected]
(...)
Has anyone managed to get this working? I've been looking in the smtp rfc documents and I've found nothing, I dont understand how gmail can do it
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的猜测是 gmail 为每个密件抄送收件人执行单独的 SMTP 会话。如果您的两条评论之间的所有内容都是一个函数
dosend(fromAddr, toAddr, content, to, cc, bcc=None)
您可能会执行以下操作:这会将其发送到
to
和cc
地址,然后使用适当的 bcc 标头将其再次单独发送到每个bcc
地址。只是为了澄清 dosend 的作用:fromAddr
和toAddr
参数用于信封(server.sendmail
的第一个和第二个参数)。to
、cc
和(可选)bcc
参数用于msg
中的标头。 (您的代码没有添加密件抄送,如果提供了可选参数bcc
,则需要添加该内容。)(编辑:我删除了有关可能使用 X-Bcc 的可能性的评论。我刚刚尝试了一下,它的工作原理如上所述。我还修复并澄清了
dosend
的描述。)My guess would be that gmail does a separate SMTP session for each BCC recipient. If everything between your two comments were a function
dosend(fromAddr, toAddr, content, to, cc, bcc=None)
you might do something like this:That would send it once to the
to
andcc
address(es), then send it again to eachbcc
address individually, with the appropriate bcc header. Just to clarify what dosend does: thefromAddr
andtoAddr
arguments are for the envelope (the first and second arguments toserver.sendmail
). Theto
,cc
, and (optional)bcc
arguments are for the headers inmsg
. (Your code doesn't add a Bcc, you would need to add that if the optional argumentbcc
is provided.)(Edit: I deleted my comments about the possibility it might use X-Bcc. I just tried it, and it works as described above. I also fixed up and clarified the description of
dosend
.)