PHPエラー「mail(): Failed to connect to mailserver」の原因と解決方法
Windows版PHPでmail()関数を使用してメールを送信しようとした時に、
PHP Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\test\mail.php on line 50
というエラーになることがある。
このエラーの原因は、php.iniファイルで以下の2つの設定を見直すことで解決できる可能性がある。
(1)SMTPサーバの指定
(2)SMTPポートの設定
例えば、php.iniの設定が
; For Win32 only.
;SMTP = localhost
smtp_port = 25
となっている場合、PHPでのメール送信の設定は、
(1)SMTPサーバ(メール送信サーバ)
localhost
(2)SMTP用のポート(smtp_port)
25番
となっていることが分かる。
もし、現在の設定でメール送信に失敗する場合は、これらの設定のどちから一方あるいは両方ともの設定を変更し、メール送信ができるようになるかを確認する。
(1)SMTPサーバ
デフォルト(初期)設定の「localhost」をPHPのメール送信サーバとして使用してよいメールサーバのホスト名またはIPアドレスに変更する。
《例》SMTP = 192.168.2.5 ※メールサーバとして「192.168.2.5」を使用してよい場合
(2)SMTP用のポート(smtp_port)
迷惑メール対策のためプロバイダが送信メールサーバのポート「25番」を使用できなくしている場合があるので、そのような場合は、サブミッションポート「587番」を指定する。
《例》smtp_port = 587
<注意>
php.iniファイルに「For Win32 only」とあるように、上記の設定は、Windows専用の設定であり、Linuxでは設定不要。