ローカルからメールを送信するには、まずメールサーバを用意する必要があります。
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
言語と文字コードを設定して、マルチバイト対応のmb_send_mail()関数を使用します。
なおmb_send_mail()の第4引数はメールヘッダの最後に追加する文字列で、ここには必ずFromヘッダを含める必要があります。
mb_language( 'Japanese' );
mb_internal_encoding( 'UTF-8' );
mb_send_mail( $to, $subject, $message, "From:{$from}" )
Fromヘッダに下記のように記述します。senderに差出人を、送信元のメールアドレスは<>で囲んでaddressに記述します。
"From:sender<address>"