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