1

from フィールドと件名フィールドを正しく取得できますが、toString() メソッドを使用しているにもかかわらず、メール コンテンツをオブジェクト形式で取得しています。

以下のソースコードで確認してください

    try {
        Session session = Session.getInstance(props, null);
        Store store = session.getStore();
        store.connect("imap.gmail.com", "mymail@gmail.com", "****");
        Folder inbox = store.getFolder("INBOX");
        inbox.open(Folder.READ_ONLY);
        Message msg = inbox.getMessage(inbox.getMessageCount());
        Address[] in = msg.getFrom();
        for (Address address : in) {
            System.out.println("FROM:" + address.toString());
        }

        Object obj = msg.getContent();
        //Multipart mp = (Multipart)obj;

        Multipart mp = (Multipart) msg.getContent();
       // MimeBodyPart part = (MimeBodyPart)mp.getBodyPart(0);
        BodyPart bp = ((Multipart) msg.getContent()).getBodyPart(0);

        // Object body = msg.getContent();

        //String value = String.valueOf(body);

        System.out.println("SENT DATE:" + msg.getSentDate());
        System.out.println("SUBJECT:" + msg.getSubject());
        System.out.println("CONTENT:" + bp.getContent().toString());
    } catch (Exception mex) {
        mex.printStackTrace();
    }
}

}

    output console:

   FROM:Myname <mymail@gmail.com>
   SENT DATE:Tue Nov 05 12:28:24 IST 2013
   SUBJECT:test
  CONTENT:javax.mail.internet.MimeMultipart@5117f31e
4

2 に答える 2

6

すべてのマルチパートを反復処理してから、テキストまたは添付ファイルのように扱う必要があるかどうかを知るためにMIME、のタイプを確認する必要があります。Part

for(int i=0;i<multipart.getCount();i++) {
    BodyPart bodyPart = multipart.getBodyPart(i);
    if (bodyPart.isMimeType("text/*")) {
        String s = (String) bodyPart.getContent();
    }
}
于 2013-11-05T08:12:32.627 に答える
1

bp.getContent().toString()

メールがマルチパートでない場合にのみメール本文を提供します(つまり、メールがマルチパートメールの場合は機能しません)

于 2013-11-05T08:13:07.800 に答える