日本語でメール送信
PHPで日本語でのメールを送信するモジュール
mailで日本語を含むメールを送信すると文字化けが発生するのでmb_send_mailでメールを送信。
PHP
/**
* メール送信
*
* @param string $to : 受信アドレス
* @param string $subject : 件名
* @param string $messag : 本文
* @param string $from : 送信アドレス
* @param string $name : 送信者名
* @param string $cc
* @param string $bcc
* @param string $reply_to: 返信アドレス
* @param string $reply_path : エラー通知アドレス
* @return boolean
*/
function sendMail($to, $subject, $message, $from, $name = '', $cc = '', $bcc = '', $reply_to = '', $reply_path = ''
{
mb_language('Japanese');
mb_internal_encoding('UTF-8');
if (empty($name)) {
$name = $from;
} else {
// ISO-2022-JP-MS はしごだか、たつさき などの文字化け対応
$name = mb_encode_mimeheader($name, 'ISO-2022-JP-MS', 'Q');
}
if (empty($reply_to)) {
$reply_to = $from;
}
if (empty($reply_path)) {
$return_path = $from;
}
// ヘッダー
$headers = '';
$headers .= "From: " . $name . "<" . $from . ">\n";
if (! empty($cc)) {
$headers .= "Cc: " . $cc . "\n";
}
if (! empty($bcc)) {
$headers .= "Bcc: " . $bcc . "\n";
}
$headers .= "Reply-To: " . $reply_to . "\n";
$headers .= "Return-Path: " . $return_path . "\n";
$subject = mb_convert_encoding($subject, 'ISO-2022-JP-MS', 'UTF-8');
$message = mb_convert_encoding($message, 'ISO-2022-JP-MS', 'UTF-8');
// 送信
return mb_send_mail($to, $subject, $message, $headers);
}
メール本文はSmartyのfetchを使い、文字列のアサイン後アウトプットされたものを反映する。
PHP
// メールテンプレート
$view->assign('account', $account);
$message = $view->fetch('template.tpl');