JavaMail发送后删除内容长度头

JavaMail发送后删除内容长度头,java,jakarta-mail,Java,Jakarta Mail,我的一个客户端使用特定的邮件服务器来接收任何数据。 要发送文件,我需要使用如下标题: ... MIME-Version: 1.0 Content-Type: application/octet-stream; name=file.zip Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=file.zip Content-Length: 9245 --- base64 file content

我的一个客户端使用特定的邮件服务器来接收任何数据。 要发送文件,我需要使用如下标题:

...
MIME-Version: 1.0
Content-Type: application/octet-stream; name=file.zip
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=file.zip
Content-Length: 9245

--- base64 file content ---
...
我使用此代码创建一条消息,使用JavaMail(v1.4.7)

当我使用
props.setProperty(“mail.debug”、“true”)发送邮件时,在日志中我看不到内容长度标题。
如果没有内容长度,服务器将不会接收消息


请帮忙!如何正确添加内容长度

传输中的邮件不应包含内容长度标题。SMTP协议定义邮件的长度,与邮件头无关。任何SMTP服务器都不应在其接收的邮件中要求标头。Content-Length标头仅用于Unix邮箱中,其中多条消息组合在一个文件中。如果您的服务器需要Content-Length标头,则该标头已损坏,应予以修复

如果您真的、真的、真的想发送一条带有内容长度头的消息,那么您需要在调用super.writeTo之前,将MimeMessage子类化,并使用ignoreList重写writeTo方法,并从ignoreList中删除“Content Length”


也应该考虑升级到.

。内容长度报头不应该包含在过境消息中。SMTP协议定义邮件的长度,与邮件头无关。任何SMTP服务器都不应在其接收的邮件中要求标头。Content-Length标头仅用于Unix邮箱中,其中多条消息组合在一个文件中。如果您的服务器需要Content-Length标头,则该标头已损坏,应予以修复

如果您真的、真的、真的想发送一条带有内容长度头的消息,那么您需要在调用super.writeTo之前,将MimeMessage子类化,并使用ignoreList重写writeTo方法,并从ignoreList中删除“Content Length”


也应该考虑升级到.

。内容长度报头不应该包含在过境消息中。SMTP协议定义邮件的长度,与邮件头无关。任何SMTP服务器都不应在其接收的邮件中要求标头。Content-Length标头仅用于Unix邮箱中,其中多条消息组合在一个文件中。如果您的服务器需要Content-Length标头,则该标头已损坏,应予以修复

如果您真的、真的、真的想发送一条带有内容长度头的消息,那么您需要在调用super.writeTo之前,将MimeMessage子类化,并使用ignoreList重写writeTo方法,并从ignoreList中删除“Content Length”


也应该考虑升级到.

。内容长度报头不应该包含在过境消息中。SMTP协议定义邮件的长度,与邮件头无关。任何SMTP服务器都不应在其接收的邮件中要求标头。Content-Length标头仅用于Unix邮箱中,其中多条消息组合在一个文件中。如果您的服务器需要Content-Length标头,则该标头已损坏,应予以修复

如果您真的、真的、真的想发送一条带有内容长度头的消息,那么您需要在调用super.writeTo之前,将MimeMessage子类化,并使用ignoreList重写writeTo方法,并从ignoreList中删除“Content Length”

也应该考虑升级到.

final SMTPMessage message = new SMTPMessage(session); // I use SMTPMessage for add extensions 
message.setDisposition("attachment; filename=" + fileName);
message.setContent(content, "application/octet-stream; name=" + fileName);
message.setHeader("Content-Length", String.valueOf(content.length));
message.saveChanges();
...
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
message.writeTo(baos);
message.setMailExtension("SIZE=" + baos.size());

final SMTPTransport tr = (SMTPTransport) session.getTransport("smtp");
tr.connect(user, password); // I need to use SMTP and POP3 authorization
final Address[] a = new Address[adrses.size()];
tr.sendMessage(message, adrses.toArray(a));
tr.close();