2

Java Mail API を使用して Gmail アカウント (IMAP) にアクセスするアプリケーションがあります。添付ファイルとして .eml ファイルを含み、メッセージが Thunderbird を使用して送信されるメッセージを除いて、すべての種類の電子メールで正常に機能します。

そのメッセージを取得しようとしたときの例外スタック トレースを次に示します。お知らせ下さい。

Caused by: com.google.code.javax.mail.MessagingException: Unable to load BODYSTRUCTURE
        at com.google.code.com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1377)
        at com.google.code.com.sun.mail.imap.IMAPMessage.getContentType(IMAPMessage.java:492)
4

4 に答える 4

4

この方法を使用して成功しました。要するに、あなたMessageのがタイプMimeMessageであり、この例外が発生している場合は、元の MimeMessage から MimeMessage の新しいインスタンスを作成し、代わりにそれに取り組みます。たとえばgetContent()、メッセージのメソッドを呼び出したときにこのエラーが発生したため、コンテンツを取得するために次のメソッドを作成しました。

private Object getEmailContent(Message email) throws IOException, MessagingException {
        try {
            return email.getContent();
        } catch (MessagingException e) {
            // handling the bug
            if (email instanceof MimeMessage && "Unable to load BODYSTRUCTURE".equalsIgnoreCase(e.getMessage())) {
                return new MimeMessage((MimeMessage) email).getContent();
            } else {
                throw e;
            }
        }
    } 
于 2014-08-14T14:54:37.413 に答える
2

JavaMail のどのバージョンを使用していますか?

こちら で説明されている Gmail のバグのいずれかに遭遇している可能性があります。

于 2013-08-08T02:25:22.903 に答える
1

GMail は不正な形式のBODYSTRUCTURE応答を生成することが知られています。代表者からのこのメッセージなどを参照してください。前回確認したとき (2012 年半ば) には、修正されていませんでした。

于 2013-08-08T14:21:29.187 に答える