При попытке прочитать составное / подписанное письмо исходные вложения игнорируются и отображается только файл smime.7ps - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь подключиться к почтовому ящику и читать сообщения и вложения.Здесь, когда есть какое-либо письмо с цифровой подписью, читается только файл smime.7ps, а другие (xml, pdf и т. Д.) Игнорируются.Я мог заметить, что в таких письмах читается только часть подписи почты, а часть тела игнорируется.Я использую Multipart здесь.Пожалуйста, дайте мне знать, если есть какой-то другой способ обработки, который мог бы помочь мне прочитать вложения частей тела для писем с цифровой подписью?Вот часть моего кода, которая выбирает сообщения / вложения:

    if (contentType.contains("multipart")){
            Multipart multiPart = (Multipart) message.getContent();
            int numberOfParts = multiPart.getCount();
            for (int partCount = 0; partCount < numberOfParts; partCount++) {
                MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
                if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
                    // this part is attachment
                    String fileName = part.getFileName();

                    attachFiles += fileName + ", ";
                    part.saveFile(SaveDirectory + File.separator + fileName);


                } else {
                    // this part may be the message content
                    messageContent = part.getContent().toString();
                }
            }

            if (attachFiles.length() > 1) {
                attachFiles = attachFiles.substring(0, attachFiles.length() - 2);
            }
            //}
        } else if (contentType.contains("text/plain") || contentType.contains("text/html")) {
            Object content = message.getContent();
            if (content != null) {
                messageContent = content.toString();
            }
        }

1 Ответ

0 голосов
/ 15 февраля 2019

Спасибо, Шеннон!Ваш вклад вложенных мультипликаторов фактически помог мне решить проблему!

MimeMultipart multiPart = (MimeMultipart) message.getContent ();// * Чтение сообщения электронной почты и его содержимого *

//***Your code for Different actions with Email Message
int numberOfParts = multiPart.getCount();
for (int partCount = 0; partCount < numberOfParts; partCount++) {

    //***Reading Body Part contents from the Email Message
    MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
        //***Your Code for Different actions with Body part contents

        //***Now the below step would help you to check if the above retrieved content(part) is having any further multiparts nested in it. 
        //***Once the check is true, then you can instantiate that content again as a multipart and retrieve the related details.
        if(part.getContent() instanceof Multipart){ 
            Multipart multipart = (Multipart) part.getContent();
            for (int j = 0; j < multipart.getCount(); j++) {
                 MimeBodyPart bodyPart = (MimeBodyPart)multipart.getBodyPart(j);
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...