【PHP】mb_send_mail関数でメールが遅れない

if(mb_send_mail($to, $subject, $message, $headers)) {
     echo "メール送信成功です";
} else {
     echo "メール送信失敗です";
}

false が返ってメールが遅れない。

phpinfoで調べる

sendmail_path /usr/sbin/sendmail -t -i

オプションについて

「-t」は、メールの宛先を自動的に設定するオプションであり、「-i」は、メールの本文に含まれるドットから始まる行を終了文字列として扱わないオプションです¹。つまり、「-t」オプションは、メールの宛先を自動的に設定するために使用され、「-i」オプションは、メールの本文に含まれるドットから始まる行を終了文字列として扱わないために使用されます。

postfixがインストールされているかの確認

第23章 postfix Red Hat Enterprise Linux 7 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.
$ rpm -q postfix
package postfix is not installed

ないのでインストール。

yum install postfix
systemctl enable postfix ← Postfix自動起動設定
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.

起動させようとしたらエラーが出た。

systemctl start postfix ← Postfix起動
Job for postfix.service failed because the control process exited with error code.
See "systemctl status postfix.service" and "journalctl -xeu postfix.service" for details.

エラー内容にあるようにコマンドを実行。

#二つとも実行した
systemctl status postfix.service
journalctl -xeu postfix.service

どちらのコマンドを実行しても共通のエラーが赤文字で出ていた。

fatal: parameter inet_interfaces: no local interface found for ::1
【CentOS】 fatal: parameter inet_interfaces: no local interface found for ::1 at softelメモ
問題 メールを送ろうとしても送れなくて、/var/log/maillog には以下のようなエラーが出ています。 Jun 15 11:04:50 tk2-xxxxxx postfix/sendmail: fa ...

ipv6が無効なのに、/etc/hosts に以下の設定があると発生するらしい。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

::1 の行をコメントアウトするといい。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

再び起動を試みる。

systemctl start postfix ← Postfix起動

起動できたので、mb_send_mail の記述があるファイルを再読み込みすると、true が返って送れた。

mb_send_mail は 送れるが mail 関数だとエラーが出て送れなかった。

cat /var/log/maillog

status=bounced
タイトルとURLをコピーしました