[PHP] mail関数でメールを送れない(届かない)時の確認事項

PHP

先程、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関数を使っていたり、エンコードしていたりしていて、違いがよく分かっていないので、理解できたら記事にします。ふぅ…寝ます。

広告