3

JAVA メール API を使用してメーリング モジュールの実装を開始しました。メールの配信状況を取得できるように、SMTPMessage を使用しています。問題は、の配信成功レポートを取得していますwrong mail addresses

これは私がメッセージを送信するために行ったことです

SMTPMessage smtpMsg=new SMTPMessage(message);
            smtpMsg.setReturnOption(SMTPMessage.RETURN_HDRS);
            smtpMsg.setNotifyOptions(SMTPMessage.NOTIFY_SUCCESS |SMTPMessage.NOTIFY_FAILURE);
            Transport transport = session.getTransport("smtp");
            //attach the listeners for the connection and transmission
            transport.addConnectionListener(this);
            transport.addTransportListener(this);
            transport.connect();
            //connect to the server and send the message
            transport.sendMessage(smtpMsg, smtpMsg.getAllRecipients());

私のクラスは を実装TransportListener,ConnectionListenerしているので、リスナーを次のようにアタッチしました

public void opened(ConnectionEvent e) {
    System.out.println("Connection opened");
    }
    public void disconnected(ConnectionEvent e) {
    System.out.println("Connection disconnected");
    }
    public void closed(ConnectionEvent e) {
    System.out.println("Connection closed");
    }

    public void messageDelivered(TransportEvent e) {
        System.out.println("Message delivered for:");
        if (e != null) {
            Address[] a = e.getValidSentAddresses();
        if (a != null && a.length > 0) {
            for (int i = 0; i < a.length; i++) {
                System.out.println(((InternetAddress) a[i]).getAddress());
            }
        }
        System.out.println("");
        }
    }

    public void messageNotDelivered(TransportEvent e) {
        System.out.println("Message not delivered for:");
        if (e != null) {
            Address[] a = e.getValidUnsentAddresses();
        if (a != null && a.length > 0) {
            for (int i = 0; i < a.length; i++) {
                System.out.println(((InternetAddress) a[i]).getAddress());
            }
        }
        System.out.println("");
        }
    }

    public void messagePartiallyDelivered(TransportEvent e) {
        System.out.println("These addresses are invalid:");
        if (e != null) {
            Address[] a = e.getInvalidAddresses();
        if (a != null && a.length > 0) {
            for (int i = 0; i < a.length; i++) {
                System.out.println(((InternetAddress) a[i]).getAddress());
            }
        }
        System.out.println("");
        }
    }

これは、ブログの oe で提案されています。ここで何が問題なのですか?間違ったメール IDS の配信ステータスを false として取得するにはどうすればよいですか

これは私がメッセージを初期化する方法です

MimeMessage message=new MimeMessage(session);
        //set the mail sender address
        message.setFrom(new InternetAddress(userName));
        //set the recipient addresses
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddr));
        //set subject of the mail
        message.setSubject(subject);
        //Set the body of the message
        message.setText(body);
4

1 に答える 1

3

http://www.oracle.com/technetwork/java/javamail/faq/index.html#badaddr

于 2012-08-30T16:36:05.493 に答える