phpのmail関数でメールが送れない場合の対処方法のメモ.
まずmail関数(またはmb_send_mail関数)の戻り値を確認を確認する
以下,PHP側が問題の場合の対処方法.
phpinfo で sendmail_path の値を確認する
sendmail_path が,たとえば
/usr/sbin/sendmail -t -i
となっているなら,/usr/sbin/sendmail がサーバ上にあるか確認.
mail関数が使えるかどうかを確認する
phpinfoで調べたsendmail_pathが次のような値になっている場合,phpにmail関数が組み込まれていない可能性がある.
-t -i
mb_send_mail関数は内部で mail関数を呼び出すので,とにかくmail関数が無い場合はメールが送信できない.
mail関数が利用可能かどうかは以下のコードを実行して,利用可能な関数の一覧を取得して調べる.
<? $funcs = get_defined_functions(); foreach ($funcs['internal'] as $val) { echo "$val"; } ?>
一覧に mailという関数名が無ければ,mail関数,およびmb_send_mail関数は利用できない.この場合は,phpの再コンパイルが必要.
- /usr/sbin/sendmail が利用可能な状態にしてから
- 再度 ./configure からやり直せば
mail関数が有効になり,メールが送れるようになる.
*1:メールサーバ