作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

mailto:に乗せるSubjectの文字コードは携帯キャリアやOSによって場合分けする必要がある


何日かこの問題で悩んだのでメモっときます。
 
HTMLに

<a href=”mailto:user@dammy.com”>MAIL</a>

 
と書くとメールアドレスへのリンクが張られ、メールクライアントが起動するようにできます。
これにSubject(件名)も一緒に渡せるようにしたい場合は
 

<a href=”mailto:user@dammy.com?subject=件名文字列”>MAIL</a>

 
とすればメールクライアントに件名も渡すことができます。
 
0224.png
 
 
しかし、この”件名”に日本語(マルチバイト文字列)を使った場合、文字コードを適切に設定しないと携帯電話などで使った場合に文字化けします。
日本語の件名が文字化けしないようにするには、UserAgentごとの場合分けが必要になります。
いろいろ調べた結果、以下のように文字コードを設定すれば文字化けしないことが分かりました。
 
 


docomo、auガラケー Shift-JIS
Softbankガラケー UTF-8
スマートフォン(iPhone、Android)  UTF-8
iPadなどのタブレット UTF-8
Windows Shift-JIS
MAC UTF-8

 
phpコードにすると以下のようになります。
(サーバー側で動作しているphpの文字コードはUTF-8とします。)
 
[php]
$subject = "日本語の件名文字列";
if( preg_match( ‘/(DoCoMo|KDDI|)/’, @$_SERVER[‘HTTP_USER_AGENT’] ) ){
// Docomo, KDDI(au)
$subject = urlencode( mb_convert_encoding($subject, ‘SJIS’, ‘UTF-8’ ) );
} else if( strpos( @$_SERVER[‘HTTP_USER_AGENT’], ‘SoftBank’ ) ){
// Softbank
$subject = urlencode( $subject ) );
} else if( strpos( @$_SERVER[‘HTTP_USER_AGENT’], ‘Windows’ ) ){
// Windows
$subject = urlencode( mb_convert_encoding($subject, ‘SJIS’, ‘UTF-8’ ) );
} else {
// Mac, Smartphone, etc
$subject = urlencode( $subject );
}
[/php]
 
 
[参考]
PCから携帯へメールを送る際に気をつける7つのポイント – Layer8 Reference
http://ref.layer8.sh/ja/entry/show/id/198

関連記事


’13食博覧会・大阪(2013)のおすすめや見どころや楽しみ方を、先日行ってきた私が紹介します。
2013年のゴールデンウィーク中にインテックス大阪で開催されている’13食博覧会に行って来ました。 事前に公式ホームページなどを見て、出店情報とかイベントとか調べたつもりでしたが、あまり情報が無い感じでしたの …

就職活動サイトの構築にFuelPHPを使ったので事例紹介
こんにちは。FuelPHP Advent Calendar 2012に参加します上村と言います。   Advent Calendarの前日記事は@yamamoto_manabuさんでした。 FuelPHP + eXcal …

神戸ITフロンティアセミナーに行ってきました
神戸のポートアイランドで開催された、神戸ITフロンティアセミナーに行ってきたので聞いたことをメモします。   僕がよく行くIT系の勉強会とは違って、平日ですし商工会議所主催ということもあって、来場者の年齢層が高めでした。 …

高知へ行って来ました(観光編)
ウェブクリエイター高知の勉強会レポートを先日書きましたが、それとは別に観光も楽しんできました。   初日、勉強会スタッフの方々とかもん亭へ。 高知グルメを堪能しました。   高知といえばカツオのタタキ。900円   チャ …

北陸の味覚、白えびとか
北陸に来ています。   金沢にある割烹魚匠庵でご当地グルメを堪能しました。 この店でひととおりの北陸名物は堪能できたので、もうこの店1つで十分でしたw   5月~6月に富山を中心に出回る白えび。唐揚げやかき揚げにするのが …

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です