2

javamail api を使用して、受信トレイ フォルダーから未読メッセージを取得してい'multipart/alternative'ますMessage.getContentType()
また、メッセージの内容を(からObject)クラスにダウンキャストするとMultipart、例外が発生します

Exception in thread "main" java.lang.classCastException: com.sun.mail.imap.IMAPInputStream cannot be cast to javax.mail.Multipart at............

メールの内容を取得してDBに保存したいだけです。

        subject  = messages[j].getSubject();                                
        System.out.println(messages[j].getContentType());
        if(messages[j].getContent() instanceof Multipart)
        {                                  
            Multipart mime = (Multipart) messages[j].getContent();

            for (int i = 0; i < mime.getCount(); i++)
            {
                BodyPart part = mime.getBodyPart(i);
                content += part.getContent().toString();
            }
        }   

ありがとう。

4

3 に答える 3

1

Multiplatt/alternative は奇数ではありません。実際、それは非常に一般的です。これは通常、同じメッセージの 2 つのバージョン (1 つはプレーン テキスト、もう 1 つは HTML) を作成するために電子メール クライアントによって使用されます。まず、メール クライアントは、メッセージがマルチパート/代替であることを検出する必要があります。これは、ヘッダー セクションで次のヘッダーを見つけることで実行できます。

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=some-boundary

次に、代替ボディ部分のそれぞれを解析し、それらのヘッダーを調べて、処理する必要があるヘッダーを確認し、それを実行する必要があります。

--some-boundary
Content-Type: text/plain

...The plain text version of the email goes here...

--some-boundary
Content-Type: text/html

<html>...The html version of the content goes here...</html>

--some-boundary--
于 2013-04-11T11:36:42.500 に答える
0

ここで説明されているのと同じ問題が発生している可能性があります。

ここで説明されているように、 multipart/alternative は完全に通常のタイプであることに注意してください

于 2012-05-02T20:03:53.240 に答える