0
我想创建DSN(已发送状态通知)并发送回发件人。我使用MimeMulitPartReport并添加3部分正文。但是,它不起作用。在收件人方面,它不显示人类可读的消息和DSN信息。我无法弄清楚,我的代码有什么问题。Java邮件创建DSN(已发送状态通知)
谢谢
我想创建DSN(已发送状态通知)并发送回发件人。我使用MimeMulitPartReport并添加3部分正文。但是,它不起作用。在收件人方面,它不显示人类可读的消息和DSN信息。我无法弄清楚,我的代码有什么问题。Java邮件创建DSN(已发送状态通知)
谢谢
我使用JavaMail 1.4.5 DSN扩展http://www.oracle.com/technetwork/java/javamail/index-141777.html:
private MimeMessage dsnEmail() throws MessagingException {
MimeMessage msg = new MimeMessage(mailSession);
MultipartReport multipart = new MultipartReport(
HUMAN_READABLE_MSG,
new DeliveryStatus(),
originalEmail
);
msg.setContent(multipart);
msg.setSubject("Delivery Status Notification (failure)");
msg.setRecipient(Message.RecipientType.TO, originalEmail.getSender());
return msg;
}
这个行家进口:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>dsn</artifactId>
<version>1.4.5</version>
</dependency>
我希望它能帮助
如果我使用你的代码,我该如何追踪邮件是否被发送|正在等待|失败? – Mihir
您的代码可能有助于追踪问题。 – flob
这里是代码:MimeMessage msg = new MimeMessage(session); MimeMultipartReport multipart = new MimeMultipartReport(); multipart.setReportType(“delivery-status”); DNSMimeBodyPart bodyPart = new DNSMimeBodyPart(MimeMessage); MimeBodyPart part1 = bodyPart.CreateTextMessage(); multipart.addBodyPart(第1部分); // Part1是人类可读的文本。 MimeBodyPart part2 = bodyPart.createDSN(remoteHost); multipart.addBodyPart(第2部分);第2部分是创建DSN(传送状态通知)。 MimeBodyPart part3 = bodyPart.createAttachedOriginal(HEAD); multipart.addBodyPart(第3部分); msg.setContent(多部分); – user553710
继续执行代码... msg.setHeader(RFC2822Headers.CONTENT_TYPE,multipart.getContentType()); msg.setSubject( “测试”); msg.setRecipient(RecipientType.TO,new InternetAddress(“[email protected]”)); if(msg.getHeader(RFC2822Headers.DATE)== null){if(msg.getHeader(RFC2822Headers.DATE)== null){msg.setHeader(RFC2822Headers.DATE,new RFC822DateFormat()。format(new Date()) );} InternetAddress add = new InternetAddress(); add.setAddress( “[email protected]”); add.setPersonal(“测试状态系统”); Transport.send(MSG);但它不能在收件人一方显示Part1,Part2和Part3。 – user553710