【PHP】
mb_send_mail - エンコード変換を行ってメールを送信する
「mb_send_mail」関数とは
PHPのプログラム上から、メールを送信するための関数で、エンコード変換を行ってメール送信が可能。
日本語によるメール送信は、言語と文字エンコーディングを設定して、マルチバイト対応の「mb_send_mail()」関数を使用する。
英文のメール送信であれば、「mail()」関数でも送信可能。
エンコード(変換)対象は、「ヘッダ」「本文」で、
「mb_language()」 の設定に基づき変換、 エンコードされる。
「mb_send_mail」関数の書式
mb_send_mail(送信先,タイトル,メール本文,ヘッダー,パラメーター)
mb_send_mail($to,$subject,$body,$headers,$sendmail_params)
メールを送信する際には、必ず「From」ヘッダが含まれている必要がある。
パラメータで指定するか、「php.ini」にデフォルト値を指定する。
エンコードの設定は、「mb_language」関数の設定となる。
ヘッダーの設定
名前の部分が日本語の場合、mb_encode_mimeheaderでエンコードする必要がある
$headers= "MIME-Version: 1.0 \n";
$headers.="From: ".mb_encode_mimeheader(mb_convert_encoding("送信元氏名","ISO-2022-JP","AUTO"))."<送信元メールアドレス> \n";
$headers.="Reply-To: ".mb_encode_mimeheader(mb_convert_encoding("返信先宛先","ISO-2022-JP","AUTO"))."<返信先メールアドレス> \n";
$headers.="Content-Type: text/plain;charset=ISO-2022-JP \n";
HTML メールを送信するには下記のようにする。
$headers='MIME-Version: 1.0' . "\r\n";
$headers.='Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers.="From: ".mb_encode_mimeheader(mb_convert_encoding("送信元氏名","ISO-2022-JP","AUTO"))."<送信元メールアドレス> \n";
$headers.="Reply-To: ".mb_encode_mimeheader(mb_convert_encoding("返信先宛先","ISO-2022-JP","AUTO"))."<返信先メールアドレス> \n";
$headers.="Content-Type: text/plain;charset=ISO-2022-JP \n";
パラメーターでの「From」ヘッダの設定方法
$sendmail_params="-f$from_email";
「mb_language」関数の設定
mixed mb_language ([ string $language = mb_language() ] )
mb_language("ja");
mb_language( 'Japanese' );
mb_internal_encoding( 'UTF-8' );
mb_send_mail() は、e-mail をエンコードする際にこの設定を使用する。
設定可能(有効な言語)
"Japanese", "ja","English","en", "uni"
Japanese | 「ISO-2022-JP」「Base64」 |
uni | 「UTF-8」「Base64」 |
English | 「ISO-8859-1」「quoted printable」 |
「php.ini」での設定
PHPからメール送信するときは「php.ini」で、「sendmail_path」の設定をしなければならない。
Windows環境で利用する場合は「sendmail_from」にデフォルトのメール送信元のメールアドレスが設定可能。
設定する場合は先頭のセミコロン(;)を外してメールアドレスを設定する。
「sendmail」のない環境から送信
Windows環境などでは基本的にsendmailが入っていないので送信に必要な情報をphp.iniに設定する必要がある。
SMTPに設定したSMTPサーバは、mail(),mb_send_mail()関数を使用する際に使われる。
「sendmail_from」に設定したメールアドレスは、「Return-Path」ヘッダとしても設定される。
SMTP = smtp.example.com
sendmail_from = sample@example.com
「sendmail」のある環境から送信
PHP設定ファイル「php.ini」の「sendmail_path」に「sendmail」のURLとオプションを指定する。
「sendmail_path」が指定されると、他の「SMTP」「sendmail_from」の設定値は無視される。
sendmail_path = "/sendmail -t -i"
デフォルトの送信元メールアドレスを登録する
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =