携帯宛のメール文字化け

24時間365日戦える営業マンを作りあげます。ホームページコンサルタント山田直毅(なおたか)です。


サーバから携帯宛にメールを送信する時に文字化けに悩むことが多い。文字化けは文字コードの変換によって引き起こされる問題の1つで、携帯で(根強い人気を誇る)半角カナが本文に含まれたりすると意外と面倒なのです。


日本ではメールの文字コードとしてISO-2022-JPが一般的。ISO-2022-JPとは、JIS規格によって規定されている日本語の文字コードの一つ。しかしこの文字コードが半角カナを扱えない。最近ではgmailからUTF-8で送信されてくることもあるけれども、正直なところ、UTF-8でメールを送るのは止めてほしい。


携帯メールの基本文字コードShift_JIS。乱暴な話だけれども、Shift_JIS(SJISエスジス)であれば良い。


あとはメールのヘッダーをひと工夫。この2行がとっても大事です。

Content-Type: text/plain;charset=Shift_JIS
Content-Transfer-Encoding: 8bit

動作確認はしていませんが、サンプルコード

<?php
// 宛先設定
$to = 'xxxxxxxx@xxxxx.xxx';
// 件名設定
$subject = 'テスト送信メール';
$subject = '=?shift_jis?B?' . base64_encode($subject) . "?=";
// 本文設定
$body = 'テスト';

// ヘッダー生成
$header  = "From: yyyyyyyy@xxxxx.xxx\r\n";
$header .= "Content-Type: text/plain;charset=Shift_JIS\r\n";
$header .= "Content-Transfer-Encoding: 8bit\r\n";

// オプション設定
$option = '-f yyyyyyyy@xxxxx.xxx';
        
// メール送信
$result = @mail($to, $subject, $body, $header, $option);

// 送信結果判定
if (!$result) {
    //// エラー処理 ////
}
?>

文字コードに柔軟に対応してくれる「mb_send_mail」はここでは使わず、古風な「mail」でいきます。