簡體   English   中英

使用javamail將字符串作為附件發送

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM