查找电子邮件附件大小

问题描述:

我有以下代码,我将文件作为附件附加到电子邮件。我也试图找到bodypart的大小(在这种情况下是附件),但它返回-1。我哪里错了?查找电子邮件附件大小

mBP = new MimeBodyPart(); 
DataSource source = new FileDataSource(fileName); 
mBP.setDataHandler(new DataHandler(source)); 
content.addBodyPart(mBP); 
String attachmentSize = mBP.getSize()+"Bytes"; 

即使附件得到正确发送,它返回大小为-1Bytes。

无法从getSize()方法获得确切的附件大小。它接近实际大小的60%,因为该方法忽略任何编码的内容。唯一的方法是以字节为单位来读取内容来确定大小。

+1

是的我知道,总是有头文件,所以我们得到的大小有点高(不是60%),请阅读:https://forums.oracle.com/thread/2269050,但在这种情况下getSize返回-1。所以我认为我采取的尺寸是错误的,但我不明白为什么。 – Aaditya

+1

JavaMail只在邮件服务器知道它时才返回大小。由于您正在创建邮件,因此邮件服务器并不了解任何信息,而JavaMail可以确定邮件大小的唯一方法是检查文件。你可以自己做,假设你关心的是文件的解码大小,而不是编码的大小。 –

+0

发现运行良好的值:接收大小0.725f – Marabita