phpでメールを送信する

mb_send_mailを用いてメールを送信する方法です。

送信するメールのエンコードは「ISO-2022-JP」に変換します。

phpのファイル自体は「UTF-8」で保存します。

Toに複数の宛先指定、Cc指定、From指定したバージョンです。

送信日付を標準出力・メール本文に含めることで照らし合わせをしやすくしています。

<?php
// 言語と文字エンコーディングを正しくセット
mb_language("Japanese");
mb_internal_encoding("UTF-8");
// 宛先情報をエンコード
$to_name = "ああああ";
$to_addr = "test@example.com";
$to_name_enc = mb_encode_mimeheader($to_name,"ISO-2022-JP");
$to2_name = "いいい";
$to2_addr = "test2@example.com";
$to2_name_enc = mb_encode_mimeheader($to2_name,"ISO-2022-JP");
$to = "$to_name_enc<$to_addr>,\n\t$to2_name_enc<$to2_addr>";
// 送信元情報をエンコード
$from_name = "ううう";
$from_addr = "test3@example.com";
$from_name_enc = mb_encode_mimeheader($from_name, "ISO-2022-JP");
$from = "$from_name_enc<$from_addr>";
// メールヘッダを作成
$header  = "From: $from\n";
$header  .= "Cc: <test4@example.com>,\n";
$header  .= "   <test5@example.com>\n";
$header .= "Reply-To: $from";
// 件名や本文をセット(ここは自動的にエンコードされる)
$subject = "メールのテスト";
$date = date('l jS \of F Y h:i:s A');
$body = "$date";
// 日本語メールの送信
$result = mb_send_mail($to, $subject, $body, $header);
if ($result) {
  echo "Success! $date \n";
} else {
  echo "Failed...$date \n";
}