SMTPサーバーを使用してBCCメールを送信しますか?
質問
私はこれを私のコードのいくつかにしばらくの間説明していました:
/**
* 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を介してBCCSを使用して電子メールを送信しようとするたびに、BCCアドレスは隠されていません - 私はSMTPプロトコルのRFC全体を読みました(数年前)。
奇妙なことは、私がBCCSで電子メールを送信した場合です 組み込み mail()
働き すべてが正しく機能し、理由がわかりません - 私は自分の電子メール送信者を転がしたいと思っていますが、これを理解していません。
誰かがこの暗い主題に光を当ててくれませんか?
解決
BCCアドレスは、宛先電子メールサーバーで剥奪されません。それはそれがどのように機能するかではありません。
SMTPが実際にどのように機能するか
- 送信者はのリストを送信します
RCPT TO
SMTPサーバーへのコマンド、各レシーバー用メールアドレス用に1つあり、このコマンドは、受信者がCCまたはBCCタイプのレシーバーに対して正常であるかどうかを区別しません。 - SMTPサーバーに送信者であり、誰がサーバーであるか、その他すべてを伝えるコマンドを呼び出した後すぐに、送信者は電話をかけます
DATA
コマンドには、電子メールのヘッダーとボディで構成される電子メールのコンテンツが含まれます。これは、電子メールクライアントが受け取ったものです。これらの電子メールヘッダーの中には、住所からの通常のCCアドレスがあります。 - BCCアドレスはレシーバーには表示されません。
DATA
宛先SMTPサーバーがそれらを剥奪したからではありません。宛先SMTPサーバーは、次を参照しますRCPT TO
電子メールコンテンツを受信するはずのメールアドレスのリスト。受信機がTO、CCまたはBCCリストにあるかどうかは本当に気にしません。
更新(明確にするため): BCCの電子メールアドレスは、にリストする必要がありますRCPT TO
コマンドリストですが、BCCヘッダーは必要です いいえ の下に印刷されますDATA
指図。
私があなたのケースに関連していると思うRFCの一部を引用してください:
メールデータには、[2]の日付、件名、to、CCなどのメモヘッダー項目が含まれていることに注意してください。
あなた自身の電子メール送信者を展開します
数年前、私は率直に言って、あなたがまだエンドツーエンドを覚えていると仮定するのにかなり長い時間がかかると思います RFC 821. :)
他のヒント
非常に遅いですが、受け入れられた答えは本質的に間違っています。
まず、SMTPは何の関係もありません BCC
. 。 SMTPは、プロトコルとして、リターンパスのみに関係しています( MAIL
リクエスト)、受信者のリスト( RCPT
リクエスト)、および転送されるデータ( DATA
リクエスト)。 SMTP経由で誰かにメールを送信したい場合は、彼らの住所をに提供する必要があります RCPT
リクエスト、期間。
電子メールの内容 - DATA
, 、効果的に - 完全に個別に指定されています RFC2822. 。方法には多くの緯度があります BCC
処理する必要があります。スペックは3つの処理方法を提供します BCC
, 、そしてそのうちの1つだけがです BCC
電子メールの準備中に剥がれました。たとえば、Thunderbirdを電子メールクライアントとして使用し、SMTPサーバーを指してから、行のメッセージを確認した場合、Thunderbirdが見つかったことがわかります。 BCC
(SMTPから) DATA
)、およびSMTP接続には標準が含まれています RCPT
のリクエスト bcc
'エドアドレス。したがって、サンダーバードは改宗します BCC
に RCPT
, 、しかし、それがそれを行う唯一の方法ではありません。
処理するもう1つの場所 BCC
MTAにあります - 言い換えれば、メールクライアントが指摘されているSMTPサーバーが何であれ。たとえば、sendmailはすべてを検索します To
, Cc
, 、 と Bcc
SMTPの線 DATA
, 、そしてそれらの行からアドレスリストを作成し、次に 削除します Bcc
ライン。 sendmailを説得して維持することができます Bcc
あなたがしたい場合は。 SendMailが宛先MTAでない場合、SMTPを介して別のMTAに接続し、受信者のアドレスを介して送信します RCPT
. 。言い換えれば、sendmailの場合 は 宛先MTA、そしてそれはaを取得します Bcc
, 、アムリーの声明に反して、それを剥奪します。
コメントには混乱もあります。指定できます RCPT
同じドメインのアドレスのリストだけでなく、任意のドメインへのアドレス。 MTAは、宛先ドメインのMXレコードを検索して、すべてを送信する場所を作成する必要があります。 Google.comとYahoo.comの声明は間違っています。