メールヘッダあれこれ
少し前に参加してた案件で、JavaMailを使ったメール送信機能があったんだけど
それが、携帯にも送る仕様だったわけで・・・
問題が、携帯に送った際に何故か文字化け・・・しかもAU、TUKAのみ
が文字化けが起こっていたっていうこと。
解決策として・・・
メールを送信する際って、色々ヘッダ部分、body部分と設定するんだけど、
最初は、
mimeMessage.setHeader("Content-Type", "text/plain");
String messageId = getTimeStamp() + "." + mailAddressFrom;
mimeMessage.setHeader("Message-ID", messageId);
mimeMessage.setHeader("Content-Transfer-Encoding", "7bit");/* 送信先設定 */
InternetAddress[] tolist = InternetAddress.parse(addressTo,false);
mimeMessage.addRecipients(Message.RecipientType.TO, tolist);/* 送信元設定 */
mimeMessage.setFrom(
new InternetAddress(addressFrom,
MimeUtility.encodeWord(mailTransferFrom,
ENCODE_ISO, "B"),ENCODE_ISO));/* メールタイトル設定 */
mimeMessage.setSubject(subject);/* メール本文設定 */
mimeMessage.setText(detail, ENCODE_ISO);/* メール送信日時設定 */
mimeMessage.setSentDate(sendDate);
/* メール送信 */
Transport.send(mimeMessage);
上記のようなコードを書いていたわけで、あえて言うなら、題名の文字列に
対して、encodeWordをかけていなかった点かと思う。
っで、とりあえず、
/* メールタイトル設定 */mimeMessage.setSubject(
MimeUtility.encodeWord(subject, ENCODE_ISO, "B"));
これで、文字化けは直ったんだが、現在参画している、プロジェクトでは、
ContentTypeとかTranfer-Encodingとかの設定が全くしてないにも
関わらず、文字化けしてないようで問い合わせも来てないらしい・・・
どういうこと?
メールサーバーとかも違ったりするのも要因のひとつかもしれないけど、
設定がない場合は、受けとるほうのメールサーバーは設定してくれる?
いまいち、しっくりこない・・・
携帯でも端末ごとで化けたり化けなかったりだしな・・・・
とりあえず、メールヘッダの参考にしたサイトは→ここ
これで、文字化けは直ったんだが、現在参画している、プロジェクトでは、
ContentTypeとかTranfer-Encodingとかの設定が全くしてないにも
関わらず、文字化けしてないようで問い合わせも来てないらしい・・・
どういうこと?
メールサーバーとかも違ったりするのも要因のひとつかもしれないけど、
設定がない場合は、受けとるほうのメールサーバーは設定してくれる?
いまいち、しっくりこない・・・
携帯でも端末ごとで化けたり化けなかったりだしな・・・・
とりあえず、メールヘッダの参考にしたサイトは→ここ