2011-08-19 91 views
0

我想创建DSN(已发送状态通知)并发送回发件人。我使用MimeMulitPartReport并添加3部分正文。但是,它不起作用。在收件人方面,它不显示人类可读的消息和DSN信息。我无法弄清楚,我的代码有什么问题。Java邮件创建DSN(已发送状态通知)

谢谢

+1

您的代码可能有助于追踪问题。 – flob

+0

这里是代码: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

+0

继续执行代码... 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

回答

1

我使用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> 

我希望它能帮助

+0

如果我使用你的代码,我该如何追踪邮件是否被发送|正在等待|失败? – Mihir

相关问题