簡體   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