javax.mail に問題があります。Web サービスから取得した MultipartFile の ArrayList があり、電子メールに添付ファイルとして追加する必要があります。ここにソース:
mailMessage.setSubject(件名); mailMessage.setFrom(新しい InternetAddress(ユーザー));
if (attacchments != null && attacchments.size() > 0) {
Multipart multipart = new MimeMultipart();
BodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText(text);
for(MultipartFile attachment : attacchments){
DataSource datasource = new ByteArrayDataSource(attachment.getInputStream(), attachment.getContentType());
MimeBodyPart attachmentPart = new MimeBodyPart();
attachmentPart.setDisposition(Part.ATTACHMENT);
attachmentPart.setHeader("Content-Type", attachment.getContentType());
attachmentPart.setHeader("Content-Transfer-Encoding", "Base64");
attachmentPart.setFileName(MimeUtility.encodeText(attachment.getName() + ".pdf"));
attachmentPart.setDataHandler(new DataHandler(datasource));
multipart.addBodyPart(messageBodyPart1);
multipart.addBodyPart(attachmentPart);
}
mailMessage.setContent(multipart);
mailMessage.saveChanges();
}
Transport transport = mailSession.getTransport();
transport.connect(SMTPServer, 465, user, password);
transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
transport.close();
例外はありません。電子メールはコンテンツ テキストとともに正しく届き、添付ファイルも届きます。txt ファイルの場合は問題ありませんが、画像の場合は破損しています。pdf ファイルの場合は、完全に空白の状態で届きます (ただし、ページ数は正しい)。さらに、到着したファイルのサイズが元のサイズよりも大きくなっています (例: 70 kb に対して 100 kb)。これについて何か考えはありますか?
前もって感謝します