android中的getContent()以MimeMultiPart的形式提供输出,但实际上我希望电子邮件正文内容保持原样

android中的getContent()以MimeMultiPart的形式提供输出,但实际上我希望电子邮件正文内容保持原样,android,imap,jakarta-mail,mime-types,Android,Imap,Jakarta Mail,Mime Types,我正在开发一个android应用程序,我必须在其中获取电子邮件。为此,我在java中使用了IMAP服务,我得到了文件夹、电子邮件ID等,但不是像EditText小部件中那样的电子邮件正文部分,我得到了这样一行-javax.mail.internet。MimeMultiPart@45eb3663 那么,我们如何解决这个问题,并获得电子邮件正文部分的原样(它是如何发送的) 我用了这样的代码 bodyPart=message[arg2].getContent().toString(); 如果一封电子

我正在开发一个android应用程序,我必须在其中获取电子邮件。为此,我在java中使用了IMAP服务,我得到了文件夹、电子邮件ID等,但不是像EditText小部件中那样的电子邮件正文部分,我得到了这样一行-
javax.mail.internet。MimeMultiPart@45eb3663

那么,我们如何解决这个问题,并获得电子邮件正文部分的原样(它是如何发送的) 我用了这样的代码

bodyPart=message[arg2].getContent().toString();

如果一封电子邮件有多个部分(如HTML和纯文本部分或附件),您将收到一封电子邮件

当您查看API文档时,您会发现可以使用
getCount()
获取零件数量,并使用
getBodyPart(int index)
获取特定零件

你必须找出你感兴趣的部分。以下代码示例获取所有零件并打印内容:

MimeMultiPart multiPart = message[arg2].getContent();
for(int i = 0; i < multiPart.getCount(); i++) {
    Object content = multiPart.getBodyPart(i).getContent();
    System.out.println(content);
}
MimeMultiPart multiPart=message[arg2].getContent();
对于(int i=0;i

希望这能帮助您了解电子邮件是如何接收的,以及如何用Java处理电子邮件。确切的用途取决于您的应用程序,您需要自己弄清楚。邮件可以是纯文本、html或多部分(文本+附件)、多部分替代(文本+html)等。 您必须遍历每个BodyPart以了解其类型,然后相应地获取内容。此javamail常见问题解答可以帮助您。

另请参阅我的一个类似问题。

如果使用JavaMail,代码段可能会更改为:

String contentType = message.getContentType().toLowerCase(Locale.Canada);
if (contentType.startsWith("multipart/alternative")) {

    // here is data handler part
    DataHandler dataHandler = message.getDataHandler();
    DataSource dataSource = dataHandler.getDataSource();
    if (dataSource instanceof IMAPMultipartDataSource) {
        IMAPMultipartDataSource imapDataSource = (IMAPMultipartDataSource) dataSource;

        int count = imapDataSource.getCount();
                ...
        }
}
其思想是使用DataHandler,因为消息的类型是IMAPMessage,而不是直接使用MultiPart