私はしばらくの間、私のコードのいくつかにこれを書き留めてきました:
_/**
* 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でメールを送信するとすべてが正常に機能し、理由がわかりません。自分のメール送信者をロールバックしたいのですが、理解できません。
誰かがこの暗い被写体に光を当ててくれませんか?
BCCアドレスは、宛先の電子メールサーバーで削除されません。それはそれがどのように機能するかではありません。
RCPT TO
コマンドのリストをSMTPサーバーに送信します。このコマンドは、受信者が通常のTo、CC、またはBCCタイプの受信者であるかどうかを区別しません。DATA
コマンドを呼び出します。このコマンドには、電子メールの内容が含まれます。電子メールのヘッダーと本文の-電子メールクライアントによって受信されるもの。これらの電子メールヘッダーの中には、通常のfromアドレス、toアドレス、CCアドレスがあります。DATA
コマンドで出力されないため、受信者に表示されません。宛先SMTPサーバーは、電子メールコンテンツを受信する必要がある電子メールアドレスのリストについて、RCPT TO
を参照するだけです。受信者がTo、CC、またはBCCリストにあるかどうかは実際には関係ありません。RCPT TO
コマンドリストにリストする必要がありますが、BCCヘッダーはnotはDATA
コマンドで出力されます。私があなたのケースに関連すると思うRFCの一部を引用する:
メールデータには、Date、Subject、To、Cc、From [2]などのメモヘッダー項目が含まれていることに注意してください。
率直に言って、数年前、あなたがまだ RFC 821 のエンドツーエンドを覚えていると仮定するのはかなり長い時間です。 :)
非常に遅いですが、受け入れられた答えは本質的に間違っています。
まず、SMTPはBCC
とは何の関係もありません。プロトコルとしてのSMTPは、リターンパス(MAIL
リクエスト)、受信者のリスト(RCPT
リクエスト)、および転送されるデータ(DATA
リクエスト)のみに関係します。 SMTP経由で誰かに電子メールを送信したい場合は、RCPT
リクエスト期間にそのアドレスを指定する必要があります。
電子メールの内容(事実上、DATA
)は、 RFC2822 で完全に個別に指定されます。 BCC
の処理方法には多くの自由度があります。仕様では、BCC
を処理する3つの方法が規定されており、そのうちの1つだけで、電子メールの準備中にBCC
が削除されます。たとえば、Thunderbirdを電子メールクライアントとして使用し、それをSMTPサーバーにポイントして、その行のメッセージを見ると、Thunderbird BCC
が(SMTP DATA
から)なくなっており、SMTP接続が行われていることがわかります。代わりに、RCPT
されたアドレスに対する標準のbcc
リクエストが含まれています。したがって、ThunderbirdはBCC
をRCPT
に変換しますが、それを行う唯一の方法ではありません。
BCC
を処理するもう1つの場所は、MTAです。つまり、メールクライアントが指しているSMTPサーバーは何でもです。たとえば、Sendmailは、SMTP To
内のすべてのCc
、Bcc
、およびDATA
行を検索し、それらの行からアドレスリストを作成してから、removesBcc
行を作成します。必要に応じて、SendmailにBcc
を保持するように説得できます。 sendmailが宛先MTAでない場合は、SMTP経由で別のMTAに接続し、RCPT
を介して受信者アドレスを送信します。言い換えると、sendmail is宛先MTAで、Bcc
を取得すると、Amryのステートメントに反して、それが削除されます。
コメントにも混乱があります。同じドメイン内のアドレスのリストだけでなく、任意のドメインにRCPT
アドレスを指定できます。 MTAは、宛先ドメインのMXレコードを検索して、すべてを送信する場所を特定する必要があります。 google.comとyahoo.comのステートメントは間違っています。