1、Java Mail的jar包有1.5以上和1.5以下的区别,1.5以上的版本可以提供Trasport监听,但是监听输出的异常类型有限,很多异常需要修改jar包的代码或者断点才能看到。
Transport transport = session.getTransport();
transport.addTransportListener(new TransportListener() {
@Override
public void messageDelivered(TransportEvent e) {
e.getMessage().toString();
System.out.println("邮件发送成功");
}
@Override
public void messageNotDelivered(TransportEvent e) {
System.out.println("邮件发送失败");
restartSchedulerJob();
}
@Override
public void messagePartiallyDelivered(TransportEvent e) {
System.out.println("部分邮件发送成功");
}
});
目前能通过Maven依赖直接下来的jar包版本最高为 1.5.0-b01
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
2、发件人的邮箱需要开通SMTP服务才能通过代码模拟发邮件的客户端
3、开通SMTP的同时可以生成授权码,授权码可以替代发件人邮箱的密码,避免发件邮箱的密码泄露
4、代码模拟发邮件的客户端的时候,很容易因为发邮件频繁被邮箱服务器禁用,因此,不建议使用163、qq邮箱等进行测试,最好用公司自己的邮箱或者自己搭建邮箱服务器。
5、QQ邮箱和阿里邮箱不能通过代码模拟客户端的方式实现通信,是否还有其他的邮箱服务器之间存在这个问题未知。