Я пытаюсь отправить изображение с помощью Javamail в качестве вложения без фактического изображения, сохраненного в файловой системе. Вместо этого у меня есть кодировка Base64.Отправка изображения в виде прикрепленного файла с помощью Javamail
public void sendMultiPartMailWithAttachments(final String[] recipient, final String from,
@Nullable final String replyTo, @Nullable final String replyToName, final String subject,
final String plainText, final String html, String image)
throws MessagingException, AddressException, UnsupportedEncodingException {
Message msg = this.setupMessage(recipient, from, replyTo, replyToName, subject);
// Create the text part
MimeBodyPart textPart = new MimeBodyPart();
textPart.setText(plainText, "utf-8");
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(html, "text/html; charset=utf-8");
byte[] bytes = Base64.getMimeDecoder().decode(image);
MimeBodyPart imagePart = new MimeBodyPart();
// imagePart.setDataHandler(new DataHandler(imageObject, "image/jpeg"));
imagePart.setDataHandler(new DataHandler(new ByteArrayDataSource(bytes, MediaType.JPEG.toString())));
imagePart.setFileName("proof_test.jpg");
Multipart multiPart = new MimeMultipart("alternative");
multiPart.addBodyPart(textPart);
multiPart.addBodyPart(htmlPart);
multiPart.addBodyPart(imagePart);
msg.setContent(multiPart);
msg.saveChanges();
Transport.send(msg);
}
Я могу получить письмо по электронной почте, но когда я делаю вложение, его невозможно открыть.
Также, когда я использую getContentType()
, он отображает text/plain
в отличие от image/jpeg
.