如果将 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","") 也没有帮助.
问题至少解决了一部分。错误 - 我试图使用以下方法设置 base64 数据:
MimeBodyPart.setText()
此替代方案允许发送消息:
MimeBodyPart mbp.setDataHandler(new DataHandler(mbp.getBytes(), "image/jpeg; charset="utf-8""));
gmail 是否会显示图像还有待观察:-)