2

電子メールからメッセージ本文のテキストを取得しようとすると、半分の文と奇妙な書式で出てきます。どんな助けでも素晴らしいでしょう...

コード:

protected void dumpPart(Part p) throws MessagingException, IOException
    {
        if (p.isMimeType("text/plain"))
        {
            if (!p.getContent().toString().equals(null))
                System.out.println((String)p.getContent());

        }
        else if (p.isMimeType("multipart/*"))
        {
            Multipart mp = (Multipart)p.getContent();

            for (int x = 0; x < mp.getCount(); x++)
            {
                dumpPart(mp.getBodyPart(x));
            }
        }
    }

出力:

The gist of PNM's protest in RP00-626 is that we shouldn't be able to

charge a transport or fuel fee for our imbalance netting and trading

service.

I aggress with PNM that our tariff language is

vague.

4

2 に答える 2

1

あなたの出力例に問題はありません。おそらく元のテキスト/プレーン部分にあるため、2 つの文が 5 行に分割されているように見えます。元のパーツの Content-Type が「text/plain; format=flowed」である可能性があります。その場合、"format=flowed" のセマンティクスを自分で実装する必要があります (html 部分を読む場合と同様に)。JavaMail はデータへのアクセスを提供するだけで、フォーマットはあなた次第です。

于 2013-01-29T19:32:32.290 に答える
1

私は問題を見ていると思います。

あなたはメッセージをチャンクしています。

dumpPart各チャンクで呼び出すと、新しい行で出力されます。したがって、メッセージがチャンクされている場合は、これをリンクします

A: The gist of PNM's protest in RP00-626 is that we shouldn't be able to
B: charge a transport or fuel fee for our imbalance netting and trading
C: service.

それを再組み立てすると、各チャンクの後に新しい行が挿入されます。

このようにすると、改行が削除されます。

protected void dumpPart(Part p, StringBuilder sb) throws MessagingException, IOException
    {
        if (p.isMimeType("text/plain"))
        {
            if (!p.getContent().toString().equals(null))
                sb.append((String)p.getContent());

        }
        else if (p.isMimeType("multipart/*"))
        {
            Multipart mp = (Multipart)p.getContent();

            for (int x = 0; x < mp.getCount(); x++)
            {
                dumpPart(mp.getBodyPart(x), sb);
            }
        }
    }
于 2013-01-29T17:48:13.520 に答える