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');"

以上のどちらかの方法をとることにより、このエラーメッセージにより指摘された問題は解決する。

前へ

宮崎県産ミディトマトを食べた

次へ

PHPエラー「mail(): SMTP server response: 554〜Client host rejected: Access denied」の原因と解決方法