获取电子邮件中附件的大小
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;
}
我在 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;
}