![](/img/trans.png)
[英]Sending string as an attachment using javamail gets duplicated content
[英]Sending string as an attachment using javamail
我一直在努力尋求解決方案,但我沒有能力。 這就是全部。 我寫了下面的代碼
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是郵件,附件Part是附件。 但是這里的messagePart不是純文本。 它是HTML。 因此,問題是如果我運行此代碼,則郵件發送成功,但附件未附加到郵件中。 所以我的問題可以歸結為這一點。 是否可以同時發送html內容並將某些內容附加到郵件。 我被困在這里。 任何人都可以幫忙。
我沒有發現您的代碼有任何明顯的錯誤。
您如何確定郵件沒有附件?
通過添加“ message.writeTo(System.out);”,您可以確切地看到JavaMail將發送的內容。 在致電Transport.send之前。
您正在使用哪個版本的JavaMail? 您正在使用什么郵件服務器? 某些郵件服務器(我正在看着您,Exchange)會將郵件重新格式化為他們認為的樣子,即使它與您的預期有所不同。
您要添加
attachmentPart.setDisposition(Part.ATTACHMENT);
Part.ATTACHMENT
表示零件應顯示為附件。
Part.INLINE
表示您希望將附件顯示為消息的一部分。
如果您在Google App Engine上運行,並且添加了虛擬文字部分,則效果很好。 我不知道為什么虛擬文本部分可以正常工作,但是我遇到了完全相同的問題,添加虛擬文本部分也對我有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.