先程、PHPのmail関数でメールを送れない(届かない)不具合に遭遇しました。2時間ほどハマりましたが、調査したら原因がわかりました。
送信元がフリーメールのメールアドレスだと届かない?
送信元をGmailのメールアドレスにしていて届かなったのですが、noreply@example.comで送ったら届きました。もしかしたら、フリーメールのメールアドレスが駄目なのかもしれません。
ソースコード
一応、ソースコードを乗せておきます。
class MailManager { public static function sendMail(string $to, string $subject, string $message, string $from): bool { $headers = "From: " . $from . "\r\n"; $mailSent = mail($to, $subject, $message, $headers); if ($mailSent) { echo "メールが送信されました。"; return true; } else { echo "メールの送信に失敗しました。"; return false; } } } // 省略 $to = 'yourmail@gmail.com'; $subject = 'テスト'; $message = 'テストメールです。'; $from = 'noreply@example.com'; MailManager::sendMail($to, $subject, $message, $from);
おわりに
ネットにあるメール送信のコードでは、mb_send_mail関数を使っていたり、エンコードしていたりしていて、違いがよく分かっていないので、理解できたら記事にします。ふぅ…寝ます。