获取电子邮件中附件的大小

Get size of attachment in email

我在 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 "";
   }

以下代码使用了jakarta.mail-api。 通常您需要使用 multipart/xxx 内容类型来发送带有附件的电子邮件。在这种情况下,您正在处理 javax.mail.internet.MimeMultipart。 所以你可以获取所有 body 部分并检查它们是否是附件。

    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;
    }