SMART LLC

日本語メールを文字化けなしで簡単に送信できる自作関数(PHP)

公開日:2015/02/04

PHPで日本語メールを送信しようとするとめんどくさい。
何も考えずにてきとーに書くと文字化けする。
毎回書くのはめんどうなのでメールの関数を自作してみた。
関数とその使い方をメモする。

mail_send()関数

メールを送信する関数。

function mail_send($mail_to,$title,$message) {

	$ini = parse_ini_file('mail.ini');
	$mailadress_from = $ini['mailaddress_from'];
	$name_from = $ini['name_from'];

	mb_language('ja');
	mb_internal_encoding('UTF-8');
	return mb_send_mail(
		$mail_to,
		$title,
		$message,
		'From:'.mb_encode_mimeheader($name_from).'<'.$mailadress_from.'>'
	);
}

送信先メールアドレスと件名と本文を渡す。
メール送信元は毎回変わることはないのでparse_ini_file()関数でiniファイルで設定できるようにしてみた。
mb_language()関数で日本語を指定。
mb_internal_encoding()関数で文字コードを指定。
mb_send_mail()関数でメールを送信。
送信元に日本語の名前をつける場合にはmb_encode_mimeheader()関数で囲うのを忘れずに。
mb_send_mail()関数の戻り値がそのまま戻り値になる。

iniファイルの書き方

mail_send()関数の送信元を設定するiniファイル。

mailaddress_from='test@smartllc.jp'
name_from='合同会社スマート'

メールアドレスと日本語の名前を設定してやる。

使い方

mail_send()関数の使い方。

try {
	if (!mail_send('test@smartllc.jp','件名','本文')) {
		throw new Exception('mail_send failed');
	}

	echo '送信しました。';

} catch (Exception $e) {
	echo '送信できませんでした。';
}

送信先メールアドレスと件名と本文を渡すだけ。

これでもうメール送信はハマらない(`・ω・´)シャキーン

SHARE