差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:jmail [2008/05/01 00:54] bananastudy:java:jmail [2010/02/22 13:50] (現在) banana
行 1: 行 1:
 ====== JavaMail 日本語の文字化け ====== ====== JavaMail 日本語の文字化け ======
 ここでは、**%%JavaMail%%**を利用しメッセージを送る時、起こる文字化けについて纏めたいと思う。\\ ここでは、**%%JavaMail%%**を利用しメッセージを送る時、起こる文字化けについて纏めたいと思う。\\
-ちなみに、メイラーによる文字化けの現象に関してはreferenceを参考してほしい。\\+ちなみに、メイラーによる文字化けの現象に関しては[[jmail#reference|reference]]を参考してほしい。\\
 タイトルと本文に分けて紹介しよう。テスト環境は以下のとおり。\\ タイトルと本文に分けて紹介しよう。テスト環境は以下のとおり。\\
 ^ 区分 ^ 環境 ^ ^ 区分 ^ 環境 ^
行 7: 行 7:
 |JDK|1.5| |JDK|1.5|
 |Web server|Tomcat5.5| |Web server|Tomcat5.5|
-|Mail server|Mail Enable Standard Version 1.983|+|Mail server|Mail Enable Standard Version **1.983**|
  
 +{{keywords>JavaMail 文字化け Content-Transfer-encoding 7-bit}}
  
 ===== mail subjectの文字化けについて ===== ===== mail subjectの文字化けについて =====
行 18: 行 19:
 ((MimeMessage)msg).setSubject("文字化けテスト","UTF-8"); ((MimeMessage)msg).setSubject("文字化けテスト","UTF-8");
 </code> </code>
 +
 +
  
 ===== mail contentの文字化けについて ===== ===== mail contentの文字化けについて =====
行 27: 行 30:
 msg.setContent("文字化けテスト<br/>", "text/html;charset=UTF-8"); msg.setContent("文字化けテスト<br/>", "text/html;charset=UTF-8");
 </code> </code>
-二つはContent-Transfer-encodingの設定だ。MUAによっては"7-bit"でencodingしないものもあるが、その対応についてはreferenceを参考しよう。\\+二つはContent-Transfer-encodingの設定だ。MUAによっては"7-bit"でencodingしないものもあるが、その対応については[[jmail#reference|reference]]を参考しよう。\\
 <code java> <code java>
 msg.setHeader("Content-Transfer-Encoding", "7bit"); msg.setHeader("Content-Transfer-Encoding", "7bit");
行 33: 行 36:
  
  
 +
 +
 +===== converting UTF-8 to iso-2022-jp =====
 +charsetがutf-8で指定されている環境(JSP, requestを含めて)でメールを送信する際、charset=iso-2022-jpであれば、
 +次の手順を従えばいい。\\
 +ここでは、WindowsのOSを基準に説明する。
 +Unicodeをそのまま**「iso-2022-jp」**で変換してしまうと化けてしまうので、途中でWindowsの一般的なcharset("MS932")でbyteストリムで読込み、**「Shift_JIS」**で変換する。\\
 +この際、**「iso-2022-jp」**で変換すると化けてしまうので、注意しなくてはならない。
 +最後は、メール本文を**「text/html;charset=iso-2022-jp」**の形式で送信すればよい。\\
 +結果的に、MUAでは日本語(自動選択)と認識される。次はencodingを行う部分だけ抜粋した部分だ。
 +<code java>
 +//srcはメール本文
 +String message = new String(src.getBytes("MS932"),"Shift_JIS");
 +//msgはMimeMessageのインスタンス
 +msg.setContent(message, "text/html;charset=iso-2022-jp");
 +</code>
 +ちなみに**「text/html;charset=Shift_JIS]**で指定した場合は、MUAで日本語(シフト JIS)で認識される。メールの確認はMicrosoft outlook2002とgmailで行った。
 +
 +P.S)一部の特殊文字(例:「㈱」等)、Shift_JISで変換する際、文字化けするのがあるのでなるべくUTF-8のままで送信するのが望ましい。
  
  
行 86: 行 108:
 </code> </code>
  
-===== reference ===== 
  
 +
 +
 +
 +===== reference =====
 +  - [[http://www.sk-jp.com/book/javamail/contents/javamail_ja_prob.html|JavaMail 文字化け]] 
 +  - [[http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=28818|JavaMail タイトルの文字化け]] 
 +  - [[http://www.langedge.jp/blog/rsd.php?itemid=348|UnicodeからShift_JISへの変換
 +]]
 +~~DISCUSSION~~
  

QR Code
QR Code study:java:jmail (generated for current page)