我想使用Java Mail发送文件,我有下一个代码:
我在这里从InputStream中的Google云端硬盘下载文件。
File file = DriveHelper.getFile("oalsdiañsdluioumadsspdmaasd-asdoiasd");
InputStream inputStream = DriveHelper.downloadFile(file);
之后我写下一个代码:
Message message = new MimeMessage(session);
String htmlBody = "hello world"; // ...
// convert inputstream to byte[]
byte[] attachmentData = IOUtils.toByteArray(inputStream);
Multipart mp = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(htmlBody, "text/html");
mp.addBodyPart(htmlPart);
MimeBodyPart attachment = new MimeBodyPart();
attachment.setFileName("archivo.pdf");
attachment.setContent(attachmentData, "application/pdf");
mp.addBodyPart(attachment);
message.setContent(mp);
Transport.send(message);
但是当我运行代码时,我有下一个例外:
javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Converting attachment data failed)
[INFO] at javax.mail.Transport.send(Transport.java:163)
[INFO] at javax.mail.Transport.send(Transport.java:48)
答案 0 :(得分:0)
attachment.setContent()无效。
您可以使用DataSource:
MimeBodyPart attachment = new MimeBodyPart();
attachment.setFileName("archivo.pdf");
DataSource dataSource = new ByteArrayDataSource(inputStream, "application/pdf");
attachment.setDataHandler(new DataHandler(dataSource));
mp.addBodyPart(attachment);
答案 1 :(得分:0)
我在此链接中找到了一个解决方案:http://www.programcreek.com/java-api-examples/index.php?api=com.google.appengine.api.mail.MailService,并解决了我的问题。