PHP メール送信/ハイブリッド(テキスト&HTML)メール送信


 
<?php

// 送信元のメールアドレス
$from = 'from@example.com';

// 送信先のメールアドレス
$to = 'to@example.com';

// 件名
$subject = '件名';

// 本文(HTML形式)
$html_body = '<html><body><h1>本文</h1></body></html>';

// 本文(テキスト形式)
$text_body = '本文';


// メール送信
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";
$headers .= "From: sender@example.com\r\n";
$headers .= "Reply-To: sender@example.com\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
// 送信元のメールアドレス
$header = 'From: '. mb_encode_mimeheader($from) . ' <' . $from . '>';

// Content-Typeをmultipart/alternativeに設定
$header .= "\nContent-Type: multipart/alternative; boundary=__BOUNDARY__";

// メール本文を作成
$body = "--__BOUNDARY__\n";
$body .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n";
$body .= $text_body;

$body .= "\n--__BOUNDARY__\n";
$body .= "Content-Type: text/html; charset=\"iso-2022-jp\"\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $html_body;
$body .= "\n\n--__BOUNDARY__--";

// 送信
mb_send_mail($to, $subject, $body, $header);

?>

上記のスクリプトでは、以下のような流れでテキストメールとHTMLメールを混在させて送信しています。

送信元のメールアドレス、送信先のメールアドレス、件名、本文を設定する。
mb_encode_mimeheader関数を使って、送信元のメールアドレスをMIMEエンコードする。
Content-Typeをmultipart/alternativeに設定する。

メール本文を作成する。
boundaryパラメータを設定し、テキストメールとHTMLメールを区切るための文字列(ここではBOUNDARY)を定義する。
テキストメールのContent-Typeをtext/plainに設定し、Content-Transfer-Encodingをbase64に設定する。
テキストメールの本文をbase64_encode関数でエンコードする。
HTMLメールのContent-Typeをtext/htmlに設定し、Content-Transfer-Encodingをbase64に設定する。
HTMLメールの本文をbase64_encode関数でエンコードする。
メール本文の最後に、boundaryパラメータで定義した文字列を終わりを示すための文字列(–BOUNDARY–)を追加する。
mb_send_mail関数を使って、送信先のメールアドレス、件名、本文、MIMEエンコードされた送信元のメールアドレスを指定して、テキストメールとHTMLメールを混在させたメールを送信する。

WEBプログム、WEBデザインなどの制作については、以下を御覧ください。

WEBプログム、WEBデザインなどの制作