Как можно избежать создания файла "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 и изображение подписи, на которое он ссылается.