日本語でメール送信

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');

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について