JavaMail:获取MimeMessage的大小

yel*_*lo3 8 java jakarta-mail

我想要获得MimeMessage的大小.getSize()方法总是返回-1.

这是我的代码:

MimeMessage m = new MimeMessage(session);
m.setFrom(new InternetAddress(fromAddress, true));
m.setRecipient(RecipientType.TO, new InternetAddress(toAddress, true));
m.setSubject(subject);

MimeBodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(body, "text/html");
Multipart mp = new MimeMultipart();
mp.addBodyPart(bodyPart);
m.setContent(mp);

m.getSize(); // -1 is returned
Run Code Online (Sandbox Code Playgroud)

这是对我的问题的回答:

ByteArrayOutputStream os = new ByteArrayOutputStream();
m.writeTo(os);
int bytes = os.size();
Run Code Online (Sandbox Code Playgroud)

sud*_*ong 1

尝试调用 mp.getSize() 以查看它返回的内容,MIMEMessage 仅在 mp 上调用它。也来自 MIME 消息 API

返回该部分内容的大小(以字节为单位)。如果无法确定大小,则返回 -1。

截至目前,您尚未将任何内容传递给消息,这可能是返回值 -1 的原因。