やみとものプログラミング日記

人生気楽に。

TOP PHPでメールが送れない(届かない)原因・調査方法

PHPでメールが送れない(届かない)原因・調査方法

PHPでメールを送信しようとmb_send_mail関数を使ってみたが一向にメールが届かないので調査してみた。

検証した環境

CentOS 7.5
PHP 5.4.16

まずメールサーバ(sendmail)が入っているか確認する

sendmailが入っていれば以下のコマンドが実行できるはず。
sendmail

僕の場合sendmailがインストールされていなかったので、次のコマンドでインストールした。
sudo yum install sendmail

sendmailコマンドを実行してみる

まず適当なファイルにメールの文面を保存する。
ここではmail_text.txtというメール文面を記述したファイルを用意したとする。
次のコマンドを実行する。
cat mail_text.txt | sendmail 送りたいメールアドレス

実行してみたが何も表示されないし、メールも届かなかった。
ログが/var/log/maillogにあるので見てみる。
ログの末尾に次のように書いてあった。
stat=Deferred: Connection refused by [127.0.0.1]

このエラー文面でググってみると次の記事がヒットした。
sendmailのインストールとあれこれ
この記事によるとsendmailが起動していない?ようなので、次のコマンドで確かめた。
sudo systemctl status sendmail

結果は
Active: inactive (dead)
つまりsendmailがアクティブになっていない。
次のコマンドでsendmailを起動した。
sudo systemctl start sendmail

もう一度sendmailコマンドを試してみる。
cat mail_text.txt | sendmail 送りたいメールアドレス

届いた!
PHPのメール送信プログラムもちゃんと動くようになった。

参考にしたサイト

PHP(mb_send_mail)でメールが送信できない

まとめ

今回みたいにプログラミングでうまくいかないことを記事に書きつつ調べるのは良い方法だと思った。
サーバープログラム(今回はsendmail)のログを見るのは、何か不具合があったときに必須だ。
エラーログの文章をググってみると何かしらの答えが見つかる。

コメント

もしよろしければコメント下さい。

ハンドルネーム:
内容:

コメント一覧

最新記事

部分空間の定義と条件、生成元の定義
線形空間の基底の定義
線形空間(ベクトル空間)