繁体   English   中英

使用 SMTP 服务器发送密件抄送电子邮件?

[英]Sending BCC emails using a SMTP server?

我已经在我的一些代码中记录了一段时间:

/**
 * Add a BCC.
 *
 * Note that according to the conventions of the SMTP protocol all
 * addresses, including BCC addresses, are included in every email as it
 * is sent over the Internet. The BCC addresses are stripped off blind
 * copy email only at the destination email server.
 *
 * @param string $email
 * @param string $name
 * @return object Email
 */

我不记得我从哪里得到它(可能的来源),但这应该与这个问题无关。 基本上,每当我尝试通过 SMTP 发送带有密件抄送的电子邮件时,密件抄送地址都不会隐藏 - 我已经阅读了 SMTP 协议的整个 RFC(几年前),我认为我没有遗漏任何东西。

奇怪的是,如果我使用内置的mail()函数发送带有密件抄送的电子邮件,一切正常,但我不知道为什么 - 我想推出自己的电子邮件发件人,但我不明白这一点。

有人可以对这个黑暗的主题有所了解吗?

密件抄送地址不会在目标电子邮件服务器上剥离。 这不是它的工作原理。

SMTP 的实际工作原理

  • 发送者会向SMTP服务器发送一个RCPT TO命令列表,每个接收者的电子邮件地址一个,该命令不区分接收者是普通的To、CC或BCC类型的接收者。
  • 在调用告诉 SMTP 服务器谁是发件人、谁是服务器以及其他所有内容的命令后不久,发件人将调用DATA命令,其中将包含电子邮件的内容 - 由电子邮件标题和正文 - 电子邮件客户端收到的正文。 在这些电子邮件标题中,通常有发件人地址、收件人地址、抄送地址。
  • BCC 地址不会显示给接收者,仅仅是因为它没有在DATA命令下打印出来,而不是因为目标 SMTP 服务器将它们剥离。 目标 SMTP 服务器将仅参考RCPT TO以获取应接收电子邮件内容的电子邮件地址列表。 它并不真正关心接收者是否在 To、CC 或 BCC 列表中。
    更新(澄清):BCC的电子邮件地址必须在上市RCPT TO命令列表,但BCC头应该在打印DATA命令。

引用我认为与您的案例相关的 RFC 的一部分:

请注意,邮件数据包括备忘录标题项目,例如日期、主题、收件人、抄送、发件人 [2]。

推出您自己的电子邮件发件人

坦率地说,几年前,我认为你仍然记住端到端的RFC 821已经很久了。 :)

很晚了,但接受的答案基本上是错误的。

首先,SMTP 与BCC无关。 SMTP 作为一种协议,只涉及返回路径( MAIL请求)、收件人列表( RCPT请求)和要传输的DATADATA请求)。 如果您想通过 SMTP 向某人发送电子邮件,那么您必须在RCPT请求中提供他们的地址。

电子邮件的内容 - DATA ,实际上 - 在RFC2822 中完全单独指定。 应该如何处理BCC有很多自由度。 该规范提供了 3 种处理BCC方法,其中只有一种是在准备电子邮件时去除了BCC 比如我用Thunderbird作为email客户端,把它指向一个SMTP服务器,然后看就行了,然后我发现Thunderbird BCC已经没了(来自SMTP DATA ),并且SMTP连接而是包含对bcc 'ed 地址的标准RCPT请求。 因此,Thunderbird 将BCC转换为RCPT ,但这不是唯一的方法。

另一个处理BCC地方是 MTA - 换句话说,您的邮件客户端指向的任何 SMTP 服务器。 例如,Sendmail 搜索 SMTP DATA中的所有ToCcBcc行,然后从这些行构建一个地址列表,然后删除Bcc行。 如果您愿意,您可以说服 Sendmail 保留Bcc 如果 sendmail 不是目标 MTA,则它将通过 SMTP 连接到另一个 MTA,并通过RCPT发送收件人地址。 换句话说,如果 sendmail目标 MTA,并且它得到一个Bcc ,它将把它去掉,这与 Amry 的声明相反。

评论中也有一些混乱。 您可以为任何域指定RCPT地址,而不仅仅是同一域中的地址列表。 MTA 必须查找目标域的 MX 记录,以确定将所有内容发送到何处。 google.com 和 yahoo.com 的声明是错误的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM