私は PHP の mail() を使用しています。私たちのサイトからのメールは正常に送受信されます。
ユーザー「theArtist」は、当サイトで絵画を売りに出しています。ユーザー "RichGuy" はそれを見て、私たちのサイトには、RichGuy が自分の電子メール アドレスと "theArtist" へのメッセージを入力するフォームがあります。
"RichGuy" がこのフォームに入力して [送信] をクリックすると、PHP コードがデータベースからアーティストの電子メール アドレスを取得し、それを mail() の呼び出しで使用される "To" 電子メール アドレスにします。RichGuy はそのフォームに返信メールを入力したばかりなので、mail() の呼び出しで "From: " ヘッダーに "RichGuy@gmail.com" が使用されます。
mail() コードをテストするために、2 つのダミーの電子メール アカウントをセットアップしました。
受信者が受信したメッセージの「差出人」の部分に私の本名が表示されるため、私の実名が問題です。私の本名と hotmail のメールアドレスは FredSmith@hotmail.comです。「theArtist」も hotmail.com アカウントであることに注意してください。ここで関係があるかどうかはわかりません。私は何年も前から FredSmith@hotmail.com アカウントを持っています。他の 2 つの「ダミー」アカウントは、この mail() コードをテストするためだけのものです。
PHPコードは次のとおりです。
$sendTo = "theArtist@hotmail.com";
$subject = "I want that painting now!";
$theMsg = "That's a fine abstract piece, I'll buy it.";
$headers = "From: RichGuy@gmail.com";
if(mail($sendTo, $subject, $theMsg, $headers))
{
// success
}
上記の電子メールは、theArtist@hotmail.com によって正常に受信されています。「theArtist」が受け取るものは次のとおりです。
あの絵が今欲しい!
フレッド・スミス(RichGuy@gmail.com)
宛先: theArtist@hotmail.com
差出人: RichGuy@gmail.com
送信: 火曜日 9/24/13 8:20 PM
宛先: theArtist@hotmail.com
素晴らしい抽象画ですね、買います。
一体なぜ、私の本名である Fred Smith が theArtist@hotmail.com のメールにこのように表示されるのですか? 私の本名を使用して認証している 2 つのダミーの電子メール アカウントを使用しているにもかかわらず、mail() は舞台裏にありますか? ローカルホスト Web サーバーと、Web 上で実行されているステージング サーバーの両方で同じ動作が見られます。
そこで、次のように問題を強制しようとしました。
$sendTo = "theArtist@hotmail.com";
$subject = "I want a deal on that painting";
$theMsg = "How about a discount on your painting?";
$headers = "From: RichGuy@gmail.com";
if(mail($sendTo, $subject, $theMsg, $headers, '-fRichGuy@gmail.com'))
変化なし。私の本名、フレッド・スミスは、送信者の電子メールアドレス、RichGuy@gmail.com の直前にどういうわけか追加されています --
あの絵の取引が欲しい
フレッド・スミス(RichGuy@gmail.com)
宛先: theArtist@hotmail.com
差出人: RichGuy@gmail.com
送信: 火曜日 9/24/13 8:20 PM
宛先: theArtist@hotmail.com
あなたの絵の割引はどうですか?
これはどういうわけか認証の問題でしょうか?
mail() が「ああ、サイトの本当の「所有者」は Fred Smith であることを認識する可能性はありますか?そのため、RichGuy@gmail.com でも theArtist@hotmail.com でも認証できず、電子メールを送信する前に認証する必要があります。フレッドスミスで。」
ところで、ローカルホスト Web サーバーの sendmail debug.log を確認しましたが、電子メール メッセージと共に "Fred Smith" がログに記録されていません。