2つの方法でPHP配信したメールが迷惑メール行きを防ぐ

配信したメールが迷惑メールに配信されて顧客に届かない。
こんなことにならないために、2つの方法を抑えておけば迷惑メールに行くリスクを下げることができます。
目次
1.return_pathを設定する
mail()関数を使う際、5番目の引数にreturn_pathを追加します。
<?php
mb_language("Japanese");mb_internal_encoding("UTF-8");
$mail = "Test Website <[email protected]>";
$header_info = "From: " . $mail . " \r\nReturn-Path: [email protected] \r\nX-Priority: 1 \r\nContent-Type: text/html;charset=UTF-8\r\nX-Sender: " . $mail . "\r\nOrganization: Test Website\r\n";
$body = <<< EOM
コンテンツ
EOM;
$body = mb_convert_encoding($body, "UTF-8", "auto");
$return_path="-f [email protected]";
mail("[email protected]", 'メールのタイトル', $body, $header_info ,$return_path);
これによってスパムが解除される場合があります。
2. 正しくspfを設定する
例えば[email protected]から送信した場合、まず受け取ったらなりすましではなく「example.org」から送信されているメールかどうかをspfを使って確認します。
そしてspfを設定していなかったり、正しく設定されていないと、なりすましと判断されて迷惑メールに直行する確率が非常に高くなります。
その為、正しく送信されたことを証明するspfはメール配信に必要不可欠な要素です。
spfの設定方法
※ここではかなり簡単に説明します。分かりにくい!という方は追加で調べていただけれると幸いです。
まず、ドメインを管理している会社(お名前.comやcloudflare、〇〇ドメイン、など)からDNSの追加を行います。
次のように設定してください。
- タイプ:TXT
- 名前(ホスト):@
- コンテンツ:v=spf1 +ip4:<送信するサーバーのIPアドレス> -all
コンテンツの設定方法は、自前のサーバーの場合そのようになりますが、レンタルサーバーの場合はレンタルサーバー会社により異なりますので「〇〇サーバー spfレコード 設定」などと検索してみてください。
spfが正しく設定されているかチェックする
の一番最初の入力欄(Domain name: )にドメイン(例:example.org)を入力。
そしてそのすぐ下のボタン( Get SPF Record (if any) )を押します。
evaluating…
SPF record passed validation test with pySPF (Python SPF library)!
とボタンの下あたりに出てくれば正しく設定されています。
出てこなかった場合しばらく待って試してみるか、設定を確認してみてください。
あれ?2つやってみたけど送信してもスパム解除されないよ?って場合
Gmailの場合で説明していきます。
Gmailは優秀なことに、一度「迷惑メール」と判断するとその後は上2つが修正されたかどうかにかかわらず問答無用で迷惑メール行きになります。

その為、修正したあと、「迷惑メール」フォルダからメールにアクセスして、
上の画像の「迷惑メールではないことを報告」を押すことで振り分けられなくなります。
一方で、そのアカウントで確認が取れなくなってしまうので、別のメールアカウントに送信してみて、一番最初に送ったメールが迷惑メールに振り分けられなければ成功です。