java - 我正在开发一款 Android 电子邮件客户端应用程序。我在读取多部分消息正文时遇到问题

标签 java android jakarta-mail multipart

我已经开发了读取消息的代码,如下

 else if (p.isMimeType("multipart/*")) {
            Log.i("snt", "22");
            System.out.println("This is a Multipart");
            System.out.println("---------------------------");
            Multipart mp = (Multipart) p.getContent();
            int count = mp.getCount();
            //for (int i = 0; i < count; i++)
            {
                System.out.println("Count is : " + String.valueOf(count));
                Multipart multipart = mp;//(Multipart) msg[i].getContent();
                for (int x = 0; x < multipart.getCount(); x++) {
                    BodyPart bodyPart = multipart.getBodyPart(x);
                    Integer ctr = MainActivity.maxSlno();
                    String disposition = bodyPart.getDisposition();
                    if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT))) {
                        System.out.println("Mail have some attachment : ");
                        Log.i("snt", "33");
                        DataHandler handler = bodyPart.getDataHandler();
                        File root = Environment.getExternalStorageDirectory();
                        String path = root.getPath() + "/" + handler.getName();//+ "/PSattachment.psz";
                        File savedFile = new File(path);
                        String destFilePath = path;//.getFileName();
                        FileOutputStream output = new FileOutputStream(destFilePath);
                        InputStream input = bodyPart.getInputStream();
                        byte[] buffer = new byte[4096];
                        int byteRead;
                        while ((byteRead = input.read(buffer)) != -1) {
                            output.write(buffer, 0, byteRead);
                        }
                        output.close();
                        MainActivity.addAttachment(String.valueOf(ctr), path);//handler.getName()
                        System.out.println("file name : " + handler.getName());
                    } else {
                        Log.i("snt", "44");
                        String str;//=bodyPart.toString();//(bodyPart.getContent());
                        str = bodyPart.getContent().toString();
                        Log.i("snt", str);
                        detail_mail.mbody.setText(str);
                    }

以上代码正在下载附件,但未打印邮件正文。它的值不是电子邮件正文,而是 javax.mail.internet.MimeMultipart@f3f0d6c。请帮助我阅读正文部分多部分电子邮件。 预先感谢您的帮助。

最佳答案

问题可能是您没有处理嵌套的多部分。请参阅msgshow.java demo program有关如何处理嵌套多部分的示例。

关于java - 我正在开发一款 Android 电子邮件客户端应用程序。我在读取多部分消息正文时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61136670/

相关文章:

java - TransactionalStateSupport 不保存变量

java - OpenGL 阴影映射双着色器

android - TextToSpeech.setLanguage ("en_US") 总是成功吗?

android - 如何在非 Activity 类中使用 getSystemService?

java - 有没有办法在 Java 中推断泛型类型?

java - 如何让MessageListener在收到某条消息后停止监听JMS中的消息?

java - 是否有 java.sql.Connection 类与 SQL Server sp_resetconnection 功能等效的函数?

java - 将图像从android上传到java servlet并保存

java - MimeMessageHelper 无法使用 JavaMail 发送同一文件的两个附件?

java - 如何防止用户读取 Java 中的变量?