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つが修正されたかどうかにかかわらず問答無用で迷惑メール行きになります。

その為、修正したあと、「迷惑メール」フォルダからメールにアクセスして、

上の画像の「迷惑メールではないことを報告」を押すことで振り分けられなくなります。

一方で、そのアカウントで確認が取れなくなってしまうので、別のメールアカウントに送信してみて、一番最初に送ったメールが迷惑メールに振り分けられなければ成功です。