send_mailやmb_send_mailでメールが届かない場合

プログラミング

セキュリティが強くてスパム扱い?

単純にsend_mailでメールを飛ばすだけだと、セキュリティが強めの相手方のメールサーバには、スパムメール扱いされてしまって、メールが届かない場合があったりします。

そういった場合は、メール送信側でちゃんとヘッダー指定してあげれば解決出来ることが多いようです。

$header = "MIME-Version: 1.0\r\n"
. "Content-Transfer-Encoding: 7bit\r\n"
. "Content-Type: text/plain; charset=ISO-2022-JP\r\n"
. "Message-Id: <" . md5(uniqid(microtime())) . "@ドメイン>\r\n"
. "From: サイト名 <送信元メールアドレス>\r\n";
$body = "内容";
mb_send_mail("送信先メールアドレス", "件名", $body, mb_encode_mimeheader($header), "-f エラーが起きた際のメール飛び先");

これで、割とセキュリティ強めなとこでも、メールがちゃんと飛びました。
これでも飛ばなかったら、メールサーバの管理者などに問い合わせてみる必要があるかもしれないですね。
※エンコードはご自身の環境で。

最後に

メールが届いていないようであれば、まずはヘッダーを疑うという癖を付けてみても良いかもしれないですね。
また、別のところでは、SPF/DKIMなども疑ってみましょう。

コメントを残す