文書の過去の版を表示しています。
JavaMail 日本語の文字化け
ここでは、JavaMailを利用しメッセージを送る時、起こる文字化けについて纏めたいと思う。
ちなみに、メイラーによる文字化けの現象に関してはreferenceを参考してほしい。
タイトルと本文に分けて紹介しよう。テスト環境は以下のとおり。
| 区分 | 環境 |
|---|---|
| JavaMail | v1.4 |
| JDK | 1.5 |
| Web server | Tomcat5.5 |
| Mail server | Mail Enable Standard Version 1.983 |
mail subjectの文字化けについて
タイトルが文字化けするのは一応charsetを確認する必要がある。
だいたい次の設定で文字化けが解消されるはずだ。
Message msg = new MimeMessage(session); ((MimeMessage)msg).setSubject("文字化けテスト","UTF-8");
mail contentの文字化けについて
本文の文字化けには二つを指定する必要がある。
一つはcontent-typeの指定だ。本文がhtmlを含むtextであれば次のように指定する。
Message msg = new MimeMessage(session); msg.setContent("文字化けテスト<br/>", "text/html;charset=UTF-8");
二つはContent-Transfer-encodingの設定だ。MUAによっては“7-bit”でencodingしないものもあるが、その対応についてはreferenceを参考しよう。
msg.setHeader("Content-Transfer-Encoding", "7bit");
Sample code snippet
以上の点を踏まえて、サンプルコードの一部を紹介しよう。
import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /**************** start ****************/ //Create properties, get Session Properties props = new Properties(); //If using static Transport.send(),need to specify which host to send it to props.put("mail.smtp.host", "localhost"); //To see what is going on behind the scene props.put("mail.debug", "true"); Session session = Session.getInstance(props); //Instantiatee a message Message msg = new MimeMessage(session); //from msg.setFrom(new InternetAddress("test@127.0.0.1")); //to msg.setRecipients(Message.RecipientType.TO, new InternetAddress("test@127.0.0.1")); //subject ((MimeMessage)msg).setSubject("テストメール","UTF-8"); //date msg.setSentDate(new Date()); //contect msg.setContent("本文<br/>内容<br/>表示", "text/html;charset=UTF-8"); //set transfer-encoding msg.setHeader("Content-Transfer-Encoding", "7bit"); //send mail Transport.send(msg); /**************** end ****************/
reference
- http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=28818 : JavaMail タイトルの文字化け
コメント