- - PR -
JavaMailとUCS2
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-10-17 21:43
いつも参考にさせていただいております。
Java技術者の皆様、お知恵を貸してください。 JavaMailで文字コードをUCS2で送信したいのですが、 Unicodeで指定すると、データはUnicodeで変換されていますが 実際にSMTPで送られてきたものはQuited-PrintableでEncodeされてしまうようです。 生のUCS2のデータを受信したいのですが、 どのように行えばよいのでしょうか。 以下簡単なメール送信プログラムです。 import java.io.*; import java.util.*; import java.util.Properties; import java.util.Date; import javax.mail.Session; import javax.mail.Message; import javax.mail.MessagingExcepropion; import javax.mail.Transport; import javax.mail.internet.MimeMessage; import javax.mail.internet.InternetAddress; public class MailTest{ public String CHAR_SET = "Unicode"; public static void main(String args[]) { MailTest mt = new MailTest(); if(args.length <5){ mt.writeUsage(); } if(args.length == 6){ mt.CHAR_SET = args[5]; } mt.send(args[0],args[1],args[2],args[3],args[4]); } public void writeUsage(){ System.out.println("Usage:"); System.out.println("java -classpath \"activation.jar;mail.jar\" MailTest <smtp.host> <from> <to> <title> <text> [<charset>]"); } public void send(String host, String from, String to, String title, String txt){ // メール送信 try { Properties prop = System.getProperties(); // SMTP サーバーアドレス prop.put("mail.smtp.host", host); // メール準備 Session session = Session.getDefaultInstance(prop, null); MimeMessage maimemessage = new MimeMessage(session); // 送信元 maimemessage.setFrom(new InternetAddress(from, "送信者名", CHAR_SET)); // 送信先 maimemessage.setRecipients(Message.RecipientType.TO, to); // 形式 maimemessage.setHeader("Content-Type", "text/plain"); // タイトル maimemessage.setSubject(title, CHAR_SET); // 本文 maimemessage.setText(txt, CHAR_SET); // 送信日 maimemessage.setSentDate(new Date()); // 送信 Transport.send(maimemessage); } catch (MessagingExcepropion e){ System.out.println("文字コード不正:" + CHAR_SET); String msg = "メール送信エラー\n" + e.toString(); System.out.println(msg); } catch (Excepropion e) { String msg = "メール送信エラー\n" + e.toString(); System.out.println(msg); } } } | ||||||||
|
投稿日時: 2003-10-22 12:14
中込です。
これで、Quited-Printableによる転送符号化は行なわれなくなるはずです。 ただし、Unicode指定(おそらく、UTFの16bit BOM付きとして解釈される?)の符号化なしの送信が、RFC821(SMTP)に準拠しないことはお分かりですね。すなわち、SMTPサーバによって、意図したとおりハンドリングされるかどうかは別問題です。 #多分、SMTPサーバの実装をされているのかと思いますが・・・。 | ||||||||
|
投稿日時: 2003-10-28 14:39
回答ありがとうございます。
#遅くなって申し訳ございません。 BOM回避はUnicodeBigUnmarkedまたはUTF-16BEで可能と聞きました。 結局Content-TypeのCharsetにUCS2を指定しなければならないので JavaMailは諦めて、直接ソケットを開いて投げる作りにしました。 スレ違いかもしれませんが、電子メールのアドレスで使用できる文字についての 国際的な仕様というものはあるのでしょうか。 検索が下手なのか、見つけることができませんでした。 | ||||||||
|
投稿日時: 2003-10-28 17:27
中込です。
たとえば ftp://ftp.isi.edu/in-notes/rfc821.txt 邦訳なら http://www.mars.dti.ne.jp/~torao/rfc/rfc821-ja.txt http://www.asahi-net.or.jp/~bd9y-ktu/dtd_f/rfc_f/rfc821j.html いずれにしてもASCIIです。 | ||||||||
1
