ファイルシステムに実際の画像を保存せずに、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()
を使用すると、image/jpeg
ではなくtext/plain
が表示されます。