3

私はJavaMailを使い始めていますが、添付ファイルの処理についていくつか質問があります。

  1. コンテンツがMultipart添付ファイルを持っている場合、どのインデックスが実際の添付ファイルであり、どのインデックスでメッセージコンテンツを見つけることができますか?添付ファイルだけを処理したいだけです。

  2. それは正しいアプローチでしょうか。特定の添付ファイルを文字列に変換したい場合は、添付ファイル部分のストリームを(を使用してgetStream())読み取り、文字列ビルダーに追加してから文字列を返すだけですか?

アドバイスありがとうございます

4

1 に答える 1

3

1.)これは私のアプリケーションの1つからのものです(これも他の誰かのコードに基づいていますが、クレジットを与えることができませんでした)。

ご覧のとおり、Partオブジェクトを再帰的に処理しています(最初は実際にはメッセージです)。

関係のないコードをいくつか削除しました。

private BodyPartDOM collectBodyParts(Part part) throws IOException, MessagingException {

        BodyPartDOM dom = new BodyPartDOM();

        Object content = part.getContent();

        if (content instanceof String) {

            // process as string

        } else if (content instanceof Multipart) {


            Multipart innerMultiPart = (Multipart) content;
            int count = innerMultiPart.getCount();

            for (int i = 0; i < count; i++) {

                BodyPart innerBodyPart = innerMultiPart.getBodyPart(i);
                BodyPartDOM subDom = collectBodyParts(innerBodyPart);
                // further recursive processing

            }

        } else if (content instanceof InputStream) {

            // process inputStream

        }

        return dom;

    }

2.)文字列に変換する場合は、先に進んでください。ただし、たとえばファイルストリームには注意してください。

コンテンツタイプのmimeタイプを確認できます。これが役立つウィキペディアからの情報です(http://en.wikipedia.org/wiki/MIME#Content-Type):

Content-Typeこのヘッダーは、メッセージコンテンツのインターネットメディアタイプを示します。たとえば、タイプとサブタイプで構成されます。

Content-Type:text / plainマルチパートタイプを使用することにより、MIMEでは、リーフノードが非マルチパートコンテンツタイプであり、非リーフノードがさまざまなマルチパートのいずれかであるツリー構造にパーツを配置することができます。タイプ。このメカニズムは以下をサポートします。

text / plain(「Content-Type:」のデフォルト値)テキストと添付ファイル(マルチパート/テキスト/プレーン部分およびその他の非テキスト部分との混合)を使用した単純なテキストメッセージ。添付ファイルを含むMIMEメッセージは、通常、ファイルの元の名前を「Content-disposition:」ヘッダーで示します。したがって、ファイルのタイプは、MIMEコンテンツタイプと(通常はOS固有の)ファイル拡張子の元の応答の両方で示されます。添付(マルチパート/テキスト/プレーン部分と元のメッセージをメッセージ/ rfc822部分として混合)プレーンテキストとHTMLなどの別の形式(テキスト内の同じコンテンツを持つマルチパート/代替)の両方で送信されるメッセージなどの代替コンテンツ/plainおよびtext/htmlフォーム)画像、音声、動画、アプリケーション(たとえば、image / jpeg、audio / mp3、video / mp4、

これを実践する方法については、 http ://www.oracle.com/technetwork/java/faq-135477.htmlを参照してください。

ハッピーコーディング!

于 2012-08-21T14:29:38.917 に答える