bool mail ( string $to , // 送信先のメールアドレス string $subject , // メールの表題 string $message // メールの本文 [, string $additional_headers // From、Cc、Bccヘッダ [, string $additional_parameters ]] )PHP: mail - Manual
送信が受け入れられた場合にTRUEが返されますが、これは送信先に届いたことを意味しません。また迷惑メール対策として宛先不明なメールにエラーを返さないサーバーが多く、送信先を誤っても送信元にエラーが返されないことがあります。
mail()の第4引数$additional_headersはメールヘッダの最後に追加する文字列で、通常Fromヘッダを指定します。このヘッダはWindows環境ならばphp.iniで
sendmail_from = me@example.com
のように指定することでも可能です。いずれの方法でもFromヘッダが指定されていないと、「"sendmail_from" not set in php.ini or custom "From:" header missing」のように警告されます。
差出人は$additional_headersに、
'From:sender<address>'
のように記述することで設定できます。
$additional_headersの指定は、Fromヘッダに次のように反映されます。
引数$additional_headersの値 | 実際のFromヘッダの値※1 |
---|---|
未指定 | アカウント名@ホスト名 |
'From:sample' | sample@ホスト名 |
'From:sample<test@so-zou.jp>' | sample<test@so-zou.jp> |
'From:sample<test@example.com>' (実在しない架空のアドレス) |
sample<test@example.com> |
言語と文字エンコーディングを設定して、マルチバイト対応のmb_send_mail()関数を使用します。
mb_language( 'Japanese' ); mb_internal_encoding( 'UTF-8' ); mb_send_mail( $to, $subject, $message, 'From:{$from}' )
bool mb_send_mail ( string $to , string $subject , string $message [, string $additional_headers = NULL [, string $additional_parameter = NULL ]] )PHP: mb_send_mail - Manual
ローカル環境でメールを送信するには、まずメールサーバを用意する必要があります。
php.iniで以下のように設定します。
mail functionの項目に、適切なSMTPのメールサーバ名とポート番号を指定します。
[mail function] ; For Win32 only. SMTP = localhost smtp_port = 25
これが正しく設定されていないと、
Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
のように警告されます。この警告は、メールサーバによってアクセスが許可されていないときにも表示されます。
sendmail_fromに差出人のメールアドレスを指定します。
; For Win32 only. sendmail_from = me@example.com
これを指定していないと、
SMTP server response: 501 5.5.4 Invalid Address
のように警告されます。
メールサーバにMicrosoft SMTP Serviceを使用しているならば、メールの中継を許可します。これが許可されていないと、
SMTP server response: 550 5.7.1 Unable to relay for name@example.com
のように警告されます。