19

しばらくの間、コードの一部にこれを書き留めました。

/**
 * 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 経由で BCC を含む電子メールを送信しようとすると、BCC アドレスは非表示になりません。SMTP プロトコルの RFC 全体を (数年前に) 読んだことがありますが、何かが欠けているとは思いません。

奇妙なことに、組み込みmail()関数を使用して BCC 付きのメールを送信すると、すべてが正常に機能し、その理由がわかりません。自分のメール送信者をロールバックしたいのですが、これを理解できません。

誰かがこの暗い主題に光を当ててくれませんか?

4

2 に答える 2

41

BCCアドレスは、宛先の電子メールサーバーで削除されません。それはそれがどのように機能するかではありません。

SMTPが実際にどのように機能するか

  • 送信者は、RCPT TO受信者の電子メールアドレスごとに1つずつ、コマンドのリストをSMTPサーバーに送信します。このコマンドは、受信者が通常のTo、CC、またはBCCタイプの受信者であるかどうかを区別しません。
  • SMTPサーバーに送信者、サーバー、およびその他すべてを通知するコマンドを呼び出した後すぐに、送信者はコマンドを呼び出します。このDATAコマンドには、電子メールのヘッダーと本文で構成される電子メールのコンテンツが含まれます。 -電子メールクライアントによって受信されるもの。これらの電子メールヘッダーの中には、通常のfromアドレス、toアドレス、CCアドレスがあります。
  • BCCアドレスはDATA、宛先SMTPサーバーがそれらを取り除いたためではなく、コマンドの下で出力されないという理由だけで、受信者に表示されません。RCPT TO宛先SMTPサーバーは、電子メールコンテンツを受信する必要がある電子メールアドレスのリストを参照するだけです。受信者がTo、CC、またはBCCリストにあるかどうかは実際には関係ありません。
    更新(明確にするため): BCC電子メールアドレスをRCPT TOコマンドリストにリストする必要がありますが、BCCヘッダーをコマンドの下に印刷しないDATAでください。

私があなたのケースに関連すると思うRFCの一部を引用する:

メールデータには、Date、Subject、To、Cc、From[2]などのメモヘッダー項目が含まれていることに注意してください。

自分のメール送信者をロールアウトする

率直に言って、2、3年前は、 RFC821のエンドツーエンドをまだ覚えていると想定するのはかなり前のことだと思います。:)

于 2010-05-01T14:46:24.170 に答える