我正在尝试从电子邮件服务器捕获电子邮件状态,为此,我已经配置了TransportListener。但是,使用Transport.send()发送电子邮件后,不会触发TransportListener事件。我知道Transport.send()将创建新实例,但是我们需要在TransportListener中注册Transport实例。我没有找到如何在TransportListener中注册Transport实例来触发TransportListener的方法messageDelivered()和messageNotDelivered()的方法。
[任何人都可以建议我如何在TransportListener中注册我的传输,以了解来自电子邮件服务器的电子邮件状态。
==下面的代码段可捕获来自邮件服务器的传递状态代码====
SMTPTransport transport = (SMTPTransport)session.getTransport("smtp");
transport.connect("host","Port","Username","password");
transport.send(message);
//transport.simpleCommand(cmd);
String response = transport.getLastServerResponse();
boolean s = transport.getReportSuccess();
int code = transport.getLastReturnCode();
System.out.println("response is:" + response);
System.out.println("report is:" + s);
System.out.println("Code is:" + code);
transport.close();
[请注意,TransportListener仅会告诉您邮件服务器是否拒绝您的消息,即您从Transport.send处获得的信息相同。如果您想知道消息是否最终传递给了收件人,则需要了解传递状态通知,但请参阅this JavaMail FAQ entry。