jakartamail - 内联发送预编码图像数据

问题描述 投票:0回答:1

如果将 base64 编码的图像包含在 img 标签中的 text/html MimeBodyPart 中,则许多提供商/电子邮件客户端(包括 gmail)根本不会显示该图像。

因此,我尝试将电子邮件拆分为多个部分,但是如果将其放入 image/jpeg MimeBodyPart 中,则已经使用 Base64 编码的图像会被额外的编码过程所破坏。

将(相同!)编码数据放入 PreencodedMimeBodyPart 中看起来应该是解决方案,但消息无法发送:-

发送消息失败 com.sun.mail.smtp.SMTPSendFailedException:550 最大允许行长度为 998 个八位字节,得到 73256

任何人都可以看到我缺少的内容或建议一种从 Base64 数据发送内联图像的方法吗?

各种尝试(如上所述)均未能通过 gmail 显示图像。

杂乱(添加和删除)标题,例如 .setDisposition("inline")、.setHeader("Content-Transfer-Encoding", "base64") 和 .addHeader("Content-ID","") 也没有帮助.

jakarta-mail
1个回答
0
投票

问题至少解决了一部分。错误 - 我试图使用以下方法设置 base64 数据:

MimeBodyPart.setText()

此替代方案允许发送消息:

MimeBodyPart mbp.setDataHandler(new DataHandler(mbp.getBytes(), "image/jpeg; charset="utf-8""));

gmail 是否会显示图像还有待观察:-)

© www.soinside.com 2019 - 2024. All rights reserved.