javaでメール。そしたら文字化け(MineMessage利用)

プログラムで受けたメールを転送したところ文字化け。

受けたメールにプログラムで処理した結果を追加して送ろうとしていました。

追加しようとした文字列と元の文字列のエンコードが違うことが原因でした。

今日はがっつり開発ネタ。

投資ネタは微塵も入っていないのであしからず。

james

.

投資のことを期待されている読者の皆様にはホント申し訳ない。

頭が開発脳になっていて、プログラムがぐるぐる回っているのです。ご容赦を。

.

javaでメールで検索すると送信の例は山ほど出てきます。

しかしながら受信の例はほとんど有りません。皆無に等しい。

今回やりたかったことはメールを受けてゴニョゴニョし、そのメールに処理した結果を付け足してよそに転送するということです。

メールを受ける部分にapache Jamesを採用。

WEBシステム開発で馴染みのあるTOMCATに似た取り回しができます。

TOMCATではservletというものに実現したい機能をプログラムしていきます。

Jamesではmailetというものに実現したい機能をプログラムしていきます。

javaでメールアプリケーションが作りたくなったら便利だと思います。

jamesで受信したメールを作ったmailetに渡すところについてはシグナルメールを注文に変換するためにに書いておきましたので興味がありましたらご覧ください。

.

さぁことは次に進みまして受信したメールの内容を把握すると処理です。

再掲になりますが今回はゴニョゴニョして、その結果をもとのメールに付け足して、指定アドレスに転送するということをしたいわけです。

ゴニョゴニョの部分は今回の記事には関係ないので省きます。

結果を得て、元のメールの本文とこちらで用意した短い文章をつなぎ合わせ転送するところまではなんなく進むことが出来ました。

ところがこのメールを開いてみてみると文字化け。

???????? ?????

のようにハテナマークの羅列になってしまっていました。

この原因がなんでかよくわからず、時間を要したのですが、結局文字コードの違い

javaは文字列はUTF-8で扱っていますが、メールは決まっていない。

iso-2022-jpだったり、shift-jisだったり、UTF-7だったり他にも。

これを一旦、UTF-8にしてやって、こちらで用意した文字列をつなぎあわせることで解決しました。


    private void forwordMail(Mail mail, String addtext) throws MessagingException {
        // メール転送
        String toAddress = "tensousaki@forward.address";
        MimeMessage forword = mail.getMessage();
        forword.setRecipients(Message.RecipientType.TO, toAddress);
        String mailMessage = MailMessage.getMailMessage(mail);
        forword.setText("");
        try {
            String utfMessage = new String(mailMessage.getBytes("UTF-8"), "UTF-8");
            forword.setText(addtext + utfMessage, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            log(e.getMessage());
        }
        forword.setHeader("Content-Transfer-Encoding", "8bit");
        getMailetContext().sendMail(forword);
    }


ご参考まで。

今日の記事が参考になったという方はクリックお願いします。


金融・投資 ブログランキングへ
株をされている方はこちら 証券先物の方はこちら FXの方はこちら
にほんブログ村 株ブログ 株 自動売買へ       にほんブログ村 先物取引ブログ 先物 システムトレードへ      にほんブログ村 為替ブログ FX システムトレード派へ

オートレ松村 について

オートマチックトレード株式会社 Automatictrade.Inc 機関投資家が行なっている自動売買も個人投資家も必要になる時代がくるとの思いから2006年自動売買関連システム専業のシステム開発会社を立ち上げる。 以来、個人投資家に自動売買サービスを提供する一方、証券会社のサービスの構築、証券会社とAPIを通じたコラボレーション、証券取引所から相談を受けたりなど、自動売買業界の先駆者として活動している。
カテゴリー: 開発 パーマリンク