繁体   English   中英

如何使用 Javax.mail.Transport 注册 Trasport 侦听器以听取 email 从 email 服务器发送的状态

[英]How to register Trasport Listener with Javax.mail.Transport to hear back email sent status from email server

我正在尝试从 email 服务器捕获 email 状态,为此我配置了 TransportListener。 但是在使用 Transport.send() 发送 email 后未触发 TransportListener 事件。 我知道 Transport.send() 将创建新实例,但我们需要使用 TransportListener 注册 Transport 实例。 我没有找到如何用TransportListener注册Transport实例来触发TransportListener的方法messageDelivered()、messageNotDelivered()。

谁能建议我如何使用 TransportListener 注册我的 Transport 以了解来自 email 服务器的电子邮件的状态。

==下面的代码片段从邮件服务器捕获传递状态代码====

SMTPTransport transport = (SMTPTransport)session.getTransport("smtp");





        transport.connect("host","Port","Username","password");

        transport.sendMessage(message, message.getAllRecipients());
        //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 中获得的信息相同。 如果您想知道邮件最终是否已传递给收件人,您需要了解传递状态通知,但请参阅此 JavaMail FAQ 条目

您可以添加传输侦听器以获取状态

        transport.addTransportListener(new TransportListener() {
        @Override
        public void messagePartiallyDelivered(TransportEvent e) {
            // TODO Auto-generated method stub
        }
        
        @Override
        public void messageNotDelivered(TransportEvent e) {
            // TODO Auto-generated method stub
        }
        
        @Override
        public void messageDelivered(TransportEvent e) {
            // TODO Auto-generated method stub
        }
    });
     transport.connect(smtpServer, port, userid, password);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM