在Java Mail API中将“消息成功传递”到错误的邮件地址 [英] Getting 'message successfully delivered' to the wrong mail address in Java Mail API

查看:121
本文介绍了在Java Mail API中将“消息成功传递”到错误的邮件地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开始使用JAVA邮件API实现邮件模块。我使用SMTPMessage,以便我可以获得邮件的传递状态。问题是我收到错误邮件地址的成功递送报告

I have started implementing a mailing module using the JAVA mail API. Am using the SMTPMessage, so that i can get the delivery status of the mail. Problem is am getting successful delivery report for wrong mail addresses

这是我发送邮件所做的工作

This is what i have done to send the message

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 ,我已经将听众附加为

Since my class implements TransportListener,ConnectionListener, i have attached listeners as

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("");
        }
    }

这是在博客中提出的。这有什么不对吗?如何将错误邮件IDS的交付状态设为false

This is suggested in oe of the blogs. Whats wrong here? How can i get the delivery status as false for wrong mail IDS

这是我初始化邮件的方式

This is how i am initializing the message

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);


推荐答案

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

这篇关于在Java Mail API中将“消息成功传递”到错误的邮件地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆