Как можно избежать создания файла "AT00001.bin" вместо изображения в качестве части тела приглашения на собрание по электронной почте?

Я пытаюсь отправить приглашение на собрание с помощью Javamail. В нескольких частях я создаю три части mimebody, 1.HTML часть почтового тела 2. Часть Inivte календаря 3. Часть изображения подписи (эта часть является проблемой)

но когда я отправляю почту, часть изображения подписи преобразуется в AT00001.bin и показывается вместо изображения подписи.

Изображение показывается, если я удаляю часть приглашения календаря из почты. После некоторых исследований я узнал, что вложение должно быть последним в письме, чтобы избежать создания этого файла, но после этого проблема продолжается (как вы можете видеть в последовательности дополнений mimebody)

Часть кода, как показано ниже:

        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");

Пожалуйста, скажите мне, если я делаю что-то не так в этом, чтобы получить часть изображения. Есть ли другой способ сделать то же самое?

1 ответ

Структура вашего сообщения неверна.

То, что вы хотите, это внешний maultipart/ mixed, первая часть тела которого является multipart/ related, вторая часть тела которого является вложением календаря. У multipart/ related есть две части - текст html и изображение подписи, на которое он ссылается.

Другие вопросы по тегам