2016-07-14 94 views
1

我找到了使用我自己的smtp服務器重定向退回的電子郵件的方法。現在,根據要求,我應該能夠使用我的程序閱讀反彈的電子郵件,例如彈跳原因,接收者的電子郵件地址,電子郵件內容等.Stackoverflow建議dsn.jar可能會有所幫助。我看到它有一些方法。但我沒有找到任何示例來檢查它是如何工作的。以下是我重定向退回的電子郵件的方式,我的問題是如何添加功能來讀取以下程序內/外的退回電子郵件?請幫忙。使用Javamail和DSN.jar解析退回的電子郵件

import java.io.FileInputStream; 
import java.io.InputStream; 
import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
import com.sun.mail.dsn.DeliveryStatus; 
import com.sun.mail.dsn.DispositionNotification; 
import com.sun.mail.dsn.MessageHeaders; 
import com.sun.mail.dsn.MultipartReport; 
import com.sun.mail.dsn.Report; 

public class SendEmail { 
    public static void main(String[] args) throws Exception { 
    Properties properties=new Properties(); 
    InputStream input=new FileInputStream("SendEmail.properties"); 
    properties.load(input); 
     //String smtpServer = "smtp.gmail.com"; 
     String smtpServer = "Server.Address"; 
     int port = 25; 
     final String userid = "[email protected]"; 
     final String password = properties.getProperty("EMAIL_PASSWORD1"); 
     String contentType = "text/html"; 
     String subject = "test: bounce an email to a different address " + 
       "from the sender"; 
     String to = "[email protected]";//some invalid address 
     String bounceAddr = "[email protected]";//change accordingly 
     String body = "Test: get message to bounce to a separate email address"; 
     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.host", smtpServer); 
     props.put("mail.smtp.port", "port"); 
     props.put("mail.transport.protocol", "smtp"); 
     props.put("mail.smtp.from", bounceAddr); 
     Session mailSession = Session.getInstance(props, 
     new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(userid, password); 
      } 
     }); 
    MimeMessage message = new MimeMessage(mailSession); 
     //SMTPMessage message=new SMTPMessage(mailSession); 
     message.addFrom(InternetAddress.parse(userid)); 
     message.setRecipients(Message.RecipientType.TO, to); 
     //message.setHeader("Return-path", bounceAddr); 
     message.setSubject(subject); 
     message.setContent(body, contentType); 
     message.addHeader("Disposition-Notification-To",bounceAddr); 
     Transport transport = mailSession.getTransport(); 
     try { 
     System.out.println("Sending ...."); 
     transport.connect(smtpServer, port, userid, password); 
     transport.sendMessage(message, 
      message.getRecipients(Message.RecipientType.TO)); 
     System.out.println("Sending done ..."); 
     } catch (Exception e) { 
     System.err.println("Error Sending: "); 
     e.printStackTrace(); 
     } 
     /*System.out.println(message.isMimeType("multipart/report")); 
     System.out.println(message.isMimeType("text/html")); 
     MultipartReport multireport = (MultipartReport)message.getContent(); 
     Report report=new Report(multireport);*/ 
    /* DeliveryStatus status=new DeliveryStatus(); 
     //status.ge 
     DispositionNotification notification=new DispositionNotification(); 
     notification.getNotifications(); 
     MessageHeaders headers=new MessageHeaders(); 
     MultipartReport multiReport=new MultipartReport(); 
     multiReport.getReturnedMessage(); 
     //Report 
     Report report=new Report();*/ 

    /* if (message.isMimeType("multipart/report")) { 
      System.out.println("Inside the loop"); 
      MultipartReport report = (MultipartReport)message.getContent(); 
      // see com.sun.mail.dsn package javadocs for MutlipartReport 
      report.getReturnedMessage(); 
      MessageHeaders header=new MessageHeaders(); 
     // header.getRecipients(arg0); 
     }*/ 
     transport.close(); 
    } 
} 

回答

0

讀取退回的消息就像讀取任何其他消息 - 您必須連接到應用商店,打開文件夾並閱讀消息。一旦你有一個代表退回消息的Message對象,你可以使用你上面註釋過的代碼來處理該消息的內容。但請注意,Message對象將是而不是是您發送的Message對象,而是來自與[email protected]帳戶關聯的文件夾的完全不同的Message對象。