Получить размер вложения в электронном письме - PullRequest
0 голосов
/ 04 ноября 2019

У меня нет большого опыта в программировании почты на JAVA, и мне нужна помощь для решения одной задачи. У меня есть этот код (это часть всего кода, куда я загружаю вложения; если вам нужно увидеть весь код, я могу отправить), и мне нужно записать размер вложения в новую переменную, я искал в Интернете и обнаружил этот размерможет быть получен из функции getSize () или путем подсчета байтов файла, но я не знаю, как я могу написать этот код. Заранее спасибо.

private long analyzeAttachment(Metadata metadata, ContentHandler content, DataPipe data, long messageId) throws IOException, MessagingException{
       long attid = IdGenerator.getUniqueID();
       Logger.getLogger(ImapMailAnalyzer.class.getName()).log(Level.FINE, "Analyzed attachemnt {0} of message {1}", new Object[]{attid, messageId});
       String attName = getAttachmentName(metadata);
       data.writeRow(attid, "Abrakadabra", attName, messageId);
       writeContent(attid, content, data);
       return attid;
   }

   private String getAttachmentName(Metadata metadata){
       if(metadata.get("resourceName") != null){
           try {
               return MimeUtility.decodeText(metadata.get("resourceName"));
           } catch (UnsupportedEncodingException ex) {
               Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
               return metadata.get("resourceName");
           }
       }
       return "";
   }

1 Ответ

0 голосов
/ 04 ноября 2019

В следующем коде используется jakarta.mail-api. Обычно вам нужно использовать тип содержимого multipart / xxx для отправки электронного письма с вложениями. В этом случае вы имеете дело с javax.mail.internet.MimeMultipart. Таким образом, вы можете получить все части тела и проверить, являются ли они вложениями.

    protected void processMimeMultipart(javax.mail.internet.MimeMultipart mimeMultipart) throws Exception {
        for(int i = 0; i< mimeMultipart.getCount();i++){
            BodyPart bodyPart = mimeMultipart.getBodyPart(i);
            int attachmentSize = getAttachmentSize(bodyPart);
        }
    }
    protected int getAttachmentSize(final javax.mail.BodyPart bodyPart) throws Exception {
        if(Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition())) {
            return bodyPart.getSize();
        }
        return -1;
    }
...