Java 送信 メールの文字コード

1,316 views
Skip to first unread message

のらぐらま

unread,
Nov 7, 2009, 12:18:44 PM11/7/09
to Google-App-Engine-Japan
メール送信で、タイトルの部分と、送信者の部分の文字コードが設定うまくいきません。
中身のほうは、きちんとISO-2022-JPに変換されるようです。

Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("norag...@gmail.com","送信者"));
msg.setTitle("おはよ");
こういうのがダメですね。

送られてきたメールみると、
タイトルは、xxxxxになっちゃうし、
送信者のほうは、
?ANSI_X3.4-1968?xxxxxxxxxxxxxxxxxx
こんなヘッダにばけてしまいます。


m seleron

unread,
Nov 8, 2009, 12:21:07 AM11/8/09
to Google-App-Engine-Japan
はじめまして。

送信者は、
InternetAddress ToAddress = new InternetAddress("x...@gmail.com", "送信
者", "ISO-2022-JP");
と、文字コードを指定すると大丈夫だと思います。

タイトルは、
msg.setSubject("タイトル", "ISO-2022-JP");
と、設定するとタイトルが表示されると思います。

お試し頂ければ幸いです。


On 11月8日, 午前2:18, のらぐらま <ich...@ff.iij4u.or.jp> wrote:
> メール送信で、タイトルの部分と、送信者の部分の文字コードが設定うまくいきません。
> 中身のほうは、きちんとISO-2022-JPに変換されるようです。
>
> Message msg = new MimeMessage(session);
> msg.setFrom(new InternetAddress("noragram...@gmail.com","送信者"));

のらぐらま

unread,
Nov 8, 2009, 2:26:38 AM11/8/09
to Google-App-Engine-Japan
おー、送信者のほうはこれでいけますね。
タイトルはそういうAPIがないです。
http://code.google.com/intl/ja/appengine/docs/java/javadoc/
自前でコンバージョンするのかなぁ。かったるい。
> > こんなヘッダにばけてしまいます。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

tetest tetest

unread,
Nov 8, 2009, 3:36:00 AM11/8/09
to google-app-...@googlegroups.com
のらぐらまさん

お早いご回答ありがとうございます。

詳しく確認するべきでした。

Message msg = new MimeMessage(session);

              ^^^^^^^^^^^^
上記、MimeMessageですが、

わたしは、 javax.mail.internet.MimeMessageを使用しております。
(名前だけで、同様のものを使用されていると思い込んでいました。)
これを使用することにより、setSubjectの第二引数でcharset指定ができると思います。

前後のソースが見えないため、
影響が心配ですが・・
(前提を覆していたらすみません)

よろしければお試しください。

mokkouyou

unread,
Nov 8, 2009, 5:04:32 AM11/8/09
to google-app-...@googlegroups.com
mokkouyouです。
import com.google.appengine.api.mail.MailServiceFactory;
import com.google.appengine.api.mail.MailService.Message;

Message message = new Message();
message.setTo(userInfo.getEmail());
StringBuilder title = new StringBuilder();
message.setSubject(title.toString());
message.setTextBody(body.toString());

MailServiceFactory.getMailService().send(message);

で文字化けせずに送れていますが・・・

そもそも、MimeMessageを利用していますが、
これって他の方がおっしゃっているような標準APIではないのでしょうか?
のらぐまさんの提示されているURLにはMimeMessageってないですよね?

実際にFQDNでどのクラスを利用しているのか提示されたほうがよいかもしれません。
少なくとも私は、setTitleを持つMimeMessageクラスは知りませんので・・・

2009年11月8日17:36 tetest tetest <tet...@gmail.com>:



--
mokkouyou
mokk...@gmail.com

m seleron

unread,
Nov 8, 2009, 7:17:56 AM11/8/09
to google-app-...@googlegroups.com
mokkouyou さま

ありがとうございます。

文字コードの指定が不要という所がきれいだと思います。
個人的には、ご提示頂いたコードの方がいいかなと

色々と試してみます。

のらぐらま

unread,
Nov 8, 2009, 3:52:19 PM11/8/09
to Google-App-Engine-Japan
あああ、なるほど了解しました。
MimeMessage型で変数宣言すると、第2引数いけますね。
プログラムのほうは、
http://code.google.com/intl/ja/appengine/docs/java/mail/usingjavamail.html
これそのままコピーしただけだったので注意力不足してました。
確かに、JavaMailの標準とGoogleのAPIと互換性ありとはいえ、ラフに見てました。
API見るのに便利だったのでついついGoogleのをみてたんだけど。
書いてるほうは、標準のほう。で、しかも、罠がはってあったわけですね@@。
とりあえず解決できそうです。ありがとうございました。

Daisuke Yamashita

unread,
Nov 9, 2009, 7:04:17 PM11/9/09
to google-app-...@googlegroups.com
山下@SOBAプロジェクトです。

返信が遅くなりましたが、APIの利用時に問題が発生した場合、まず私の連載記事を
見ていただくと良いかと思います。

> http://codezine.jp/article/corner/289

一般的にハマりそうなポイントは、一回ハマってから解決してコードを書いてある
ので(笑)

今、雑誌の方に掛かりっきりで、しばらく書いていませんが、そろそろXMPPと
受信メールについて書こうと思っています。

2009/11/9 のらぐらま <ich...@ff.iij4u.or.jp>:
--
Daisuke Yamashita
Reply all
Reply to author
Forward
0 new messages