使用javamail将字符串作为附件发送

问题描述 投票:1回答:3

我一直试图找到解决方案,但我无法做到。这是整个事情。我写了以下代码

 MimeMessage message = new MimeMessage(session);
 message.setFrom(new InternetAddress(from));
 message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
 message.setSubject(subject);
 message.setSentDate(new Date());

 MimeBodyPart messagePart = new MimeBodyPart();
 messagePart.setContent(messageContent, "text/html");
 Multipart multipart = new MimeMultipart("mixed");
 multipart.addBodyPart(messagePart);

 MimeBodyPart attachmentPart = new MimeBodyPart();
 DataSource source = new ByteArrayDataSource(attachment.getBytes(), "text/plain");
 attachmentPart.setDataHandler(new DataHandler(source));
 attachmentPart.setFileName(attachmentFileName);
 multipart.addBodyPart(attachmentPart);
 message.setContent(multipart);

 try {
Transport.send(message);                
 } catch (Exception e) {
e.printStackTrace();
   }

代码几乎是自我解释的。 messagePart是邮件,attachmentPart是附件。但是这里的messagePart不是纯文本。这是HTML。所以问题是,如果我运行此代码邮件已成功发送但附件未附加到邮件。所以我的问题归结为这个。是否可以发送html内容并同时将某些内容附加到邮件中。我被困在这里。有人可以帮忙吗。

java javamail email-attachments
3个回答
0
投票

我没有看到你的代码有任何明显错误。

你如何确定邮件没有附件?

您可以通过添加“message.writeTo(System.out);”来确切了解JavaMail将发送的内容。就在你调用Transport.send之前。

您使用的是哪个版本的JavaMail?你使用什么邮件服务器?有些邮件服务器(我正在看你,Exchange)会将邮件重新格式化为他们认为应该是什么,即使它与你的意图不同。


0
投票

如果您在Google App Engine上运行并添加了一个虚拟文本部分,则效果很好。我不知道为什么虚拟文本部分使它工作,但我遇到了完全相同的问题,并添加了一个虚拟文本部分也为我工作。


0
投票

你想要添加

attachmentPart.setDisposition(Part.ATTACHMENT);

Part.ATTACHMENT表示该部分应显示为附件。

Part.INLINE表示您希望将附件显示为消息的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.