我正在编写一个简单的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));
我原本以为如果尝试连接失败,那么“断开连接”甚至会触发?
答案 0 :(得分:0)
在JavaMail中,“已连接”实际上意味着“已连接并经过身份验证并可随时使用”。如果身份验证失败,则传输永远不会“连接”。
我不确定为什么你需要“监听”身份验证失败,因为当connect方法抛出AuthenticationFailedException时会同步报告它们。