0

我正在尝试使用 Javamail 发送会议邀请。在多部分中,我正在创建三个 mimebodypart,1.HTML 邮件正文部分 2.Calendar Inivte Part 3.Signature Image 部分(这部分是问题)

但是当我发送邮件时,签名图像部分被转换为 AT00001.bin 并显示而不是签名图像。

如果我从邮件中删除日历邀请部分,则会显示图像。 经过一番研究,我知道附件部分必须是邮件中的最后一部分,以避免创建此文件,但这样做之后问题仍然存在。(如您在 mimebody addpart 序列中所见)

代码部分如下:

        Multipart multipart = new MimeMultipart("mixed"); 
        BodyPart messageBodyPart = buildHtmlTextPart(); //html is read and added to the mail body part
        BodyPart calendarPart = buildCalendarPart();
        BodyPart signatureImagePart = buildSignatureImagePart(); //image is read and added as a content part of html.

        multipart.addBodyPart(messageBodyPart);
        multipart.addBodyPart(calendarPart);
        multipart.addBodyPart(signatureImagePart);

buildSignatureImagePart() 如下,

        MimeBodyPart signatureimagepart = new MimeBodyPart();
        DataSource fds = new FileDataSource(filePath); //filepath is image file location

        signatureimagepart.setDataHandler(new DataHandler(fds));
        signatureimagepart.setHeader("Content-ID", "<my-image-id>");

buildHtmlTextPart() 如下,

        MimeBodyPart descriptionPart = new MimeBodyPart();

        descriptionPart.setContent("<html><body><b>Test</b> email <img src='cid:my-image-id'></body></html>", "text/html; charset=utf-8");

请告诉我我是否在这方面做错了什么来获取图像部分。还有其他方法可以做到这一点吗?

4

1 回答 1

0

您的消息结构错误。

你想要的是一个外部 maultipart/mixed,它的第一个 body 部分是一个 multipart/related,它的第二个 body 部分是日历附件。multipart/related 有两部分 - html 文本和它引用的签名图像。

于 2016-10-21T06:27:32.923 回答