SMTP 中的密件抄送字段 [ 显示/不显示 ] 问题

发布于 2024-11-18 04:31:24 字数 3311 浏览 2 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寒尘 2024-11-25 04:31:24

我的猜测是 gmail 为每个密件抄送收件人执行单独的 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)

这会将其发送到 tocc 地址,然后使用适当的 bcc 标头将其再次单独发送到每个 bcc 地址。只是为了澄清 dosend 的作用:fromAddrtoAddr 参数用于信封(server.sendmail 的第一个和第二个参数)。 tocc 和(可选)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:

dosend(fromAddr, to+cc, content, to, cc)
for t in bcc:
    dosend(fromAddr, t, content, to, cc, t)

That would send it once to the to and cc address(es), then send it again to each bcc address individually, with the appropriate bcc header. Just to clarify what dosend does: the fromAddr and toAddr arguments are for the envelope (the first and second arguments to server.sendmail). The to, cc, and (optional) bcc arguments are for the headers in msg. (Your code doesn't add a Bcc, you would need to add that if the optional argument bcc 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.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文