GoogleAppEngine for JavaのMailAPI使用時の文字化けについて

今更ながら。

GAE/Jでメール送信するときに

          javax.mail.Message msg = new MimeMessage(session);
          msg.setFrom(new InternetAddress("sender@{AppID}.appspotmail.com"));
          msg.addRecipient(Message.RecipientType.TO,
                           new InternetAddress("moblog@example.com"));
          ((MimeMessage)msg).setSubject(mailsubject,"UTF-8"); //文字化け対策
          msg.setText(msgBody);
          Transport.send(msg);
というようなことをしていたけど、

Google App Engineでよくある質問 - あおうさ@日記: 
http://d.hatena.ne.jp/bluerabbit/20100129/1264771990 

このような記事があったので試してみた。
JavaMailを使ってメール送信を実装していますが文字化けしてしまいます。
Google App Engineに最適化されたlow level apiを使用しましょう。下記のような簡潔なコードで文字化け問題ともおさらばです。
Message msg = new Message();
msg.setSender(fromAddress);
msg.setTo(toAddress);
msg.setSubject(subject);
msg.setTextBody(body);
MailServiceFactory.getMailService().send(msg);
Messageのパッケージ階層がことなっていて、両者のクラスであることに注意。

com.google.appengine.api.mail.MailService.Message
javax.mail.Message

↓にて書き換え

          com.google.appengine.api.mail.MailService.Message msg =
          new com.google.appengine.api.mail.MailService.Message();
          msg.setSender("sender@{appID}.appspotmail.com");
          msg.setTo("moblog@example.com");
          msg.setSubject(mailsubject);
          msg.setTextBody(msgBody);
          MailServiceFactory.getMailService().send(msg);

コメント

このブログの人気の投稿

4.3.0 Temporary Lookup Failureでドツボってた話

tomcat起動時の環境変数でJRE_HOMEを指定するときに

何が得られて何処へ向かうかだけを問うべき