PHPエラー「mail(): "sendmail_from" not set in php.ini or custom "From:" header missing」の原因と解決方法
Windows 7のコマンドプロンプト等で
php -r "mail('送信先アカウント@nobuneko.com','test-title','test-message');"
といったようにPHP 5.4のmail関数でメールを送信しようとすると、以下のようなエラーになり、送信できない時がある。
PHP Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in Command line code on line 1
このエラーの原因は、送信元メールアドレスのFromが指定していないことにある。
この問題を解決するには、エラーメッセージに記載されているように2つの方法がある。
解決方法1
php.iniのsendmail_fromに送信元メールアドレスを指定する。
<修正前のphp.ini>
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com
<修正後のphp.ini>
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = 送信元メールアドレスのアカウント@nobuneko.com
解決方法2
mailコマンドの第4引数でFromを指定する。
<修正前のmailコマンド>
php -r "mail('送信先アカウント@nobuneko.com','test-title','test-message');"
<修正後のmailコマンド>
php -r "mail('送信先アカウント@nobuneko.com','test-title','test-message','From: 送信元メールアドレスのアカウント@nobuneko.com');"
以上のどちらかの方法をとることにより、このエラーメッセージにより指摘された問題は解決する。