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



我对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。所以你可以拿到所有的身体部位,检查它们是否是附件。

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

相关内容

  • 没有找到相关文章

最新更新