メールが 2 つのバニティ Gmail アカウントに送信される 2 つのサイトがあります。PHP を使用してメールを処理していますが、メールが gmail に表示されません (スパム/ジャンクではなく、表示されないだけです)。PHP を個人の hotmail アカウントに送信するように切り替えると、メールが表示されます。ISP を介した個人のメール アカウントについても同様です。
メールはこれら 2 つのバニティ Gmail アカウントに表示されていましたが、停止する理由はありますか?
適切なヘッダーデータを設定していない可能性があり、それらの電子メールはスパムフォルダに到達する前でもブロックされます。
次のようなものを追加してみてください。
$headers = 'From: your@email.com' . "\r\n" .
'Reply-To: some@email.com';
これはmail()関数の4番目のパラメーターです。
過去に、特定の無料メール プロバイダーがサーバーからメールを受信しないという問題に遭遇しました。
実際のメッセージに正しいヘッダーを配置することに加えて、いくつかのことが原因であることがわかりました。
PHP は問題なくメールを送信している可能性がありますが、Google サーバーはサーバーからのメッセージを拒否しています。
簡単に実行してこれをテストできます。
mail -s Test you@gmail.com < /dev/null
サーバーに問題がなければ、Gmail にメッセージが届きます。そうでない場合は、PHP に問題はありません。
ドメインに適切な SPF レコードがあると本当に役立つことがわかりました
手遅れだと思いますが...次のコードはGmailで機能しています。
<html>
Mail Responder:<br><br>
<?php
$to = $_REQUEST['MyEmail'] ;
$subject = $_REQUEST['subject'] ;
$greeting = $_REQUEST['greeting'] ;
$realname = $_REQUEST['realname'] ;
$HisEmail = $_REQUEST['HisEmail'] ;
$message = $_REQUEST['message'] ;
$headers = 'From: '.$HisEmail;
//$headers = 'From: $HisEmail' . "\r\n" .
//'Reply-To: some@email.com';
$send = mail($to, $subject, $greeting."\n"."\n".$realname."\n"."\n".$HisEmail."\n"."\n".$message, $headers );
if ($send)
$mailReturns = "Mail sent successfully.";
else
$mailReturns = "Mail sent failed.";
?>
<?php echo $mailReturns; ?>
</html>
これは、PHP の問題ではなく、サーバーの構成の問題である可能性が高いようです。
補足として、gmail はローカル システムよりも寛容であることがわかったので、gmail アカウントにメッセージを送信できましたが、ホスティング ドメインのアカウントには送信できませんでした。
Google がサード パーティのブラック リストを使用しているとは思いませんが、サーバーの構成に注意を払っています (正しく識別されているか、SPF と RDNS レコードが一致しているか、コマンドに適切に応答しているか)。thisまたはthisのようないくつかのテスト サービスを試すことができます。