您如何使用JavaMail API侦听身份验证错误?

时间:2017-07-12 05:06:43

标签: android smtp javamail

我正在编写一个简单的javamail客户端来发送来自帐户的电子邮件。我想听取身份验证失败,因此我可以显示相应的消息。我正在尝试使用Transport对象并为其添加连接侦听器。我可以在控制台中看到我收到错误但是我分配给“addConnectionListener()”的对象没有提起它。示例代码:

mSession = Session.getInstance(props,
                    new javax.mail.Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication(CustomMailSender.this.mUser, CustomMailSender.this.mPassword);
                        }
                    });

            mTransport = mSession.getTransport(protocol);
            mTransport.addConnectionListener(new ConnectionListener() {

                @Override
                public void opened(ConnectionEvent e) {
                    Timber.e(" connection opened");
                }

                @Override
                public void disconnected(ConnectionEvent e) {
                    Timber.e(" connection disconnected");
                }

                @Override
                public void closed(ConnectionEvent e) {
                    Timber.e(" connection closed");
                }
            });
            int iPort = Integer.parseInt(port);
            mTransport.connect(mMailHost,iPort , user, password);

我在这里发送消息

    mTransport.sendMessage(message, InternetAddress.parse(recipients));

我原本以为如果尝试连接失败,那么“断开连接”甚至会触发?

1 个答案:

答案 0 :(得分:0)

在JavaMail中,“已连接”实际上意味着“已连接并经过身份验证并可随时使用”。如果身份验证失败,则传输永远不会“连接”。

我不确定为什么你需要“监听”身份验证失败,因为当connect方法抛出AuthenticationFailedException时会同步报告它们。