IOException while sending message; nested exception is:java.io.FileNotFoundException

异步发送邮件出现的异常情况

1、问题描述

近期做了一个发送邮件的功能,因为在处理发送邮件联系人上出现过失效的邮箱地址,为了快速定位到问题。现将批量发送的方式改为单独发送。

Failed messages: javax.mail.MessagingException: IOException while sending message;
  nested exception is:
	java.io.FileNotFoundException: /tmp/tomcat.8268785341862084524.9500/work/Tomcat/localhost/ROOT/upload_6a6103a9_6094_4778_9ff1_a3211bcf4d9b_00026217.tmp (No such file or directory)

2、异常产生原因

由于我在发送邮件的方法上加了@Async异步制定方法的注解,所以在发送带有附件邮件的时候会直接在sprin-tomcat里读取临时的流到file中,而当@Async异步执行一次后会直接将流给关闭,其他在循环中调用该方法时会取不到这个临时的流,所以导致报出现在的这个异常情况。

3、改进方法:

3.1、在发送邮件的方法上去掉@Async注解(优:改动快不必要动其他代码;缺:加大发送邮件的时间占用大量资源,导致发送效率下降)

3.2、提供一个识别失效邮箱的方法,将邮件地址以逗号隔开一次性发送全部邮件

3.3、将邮件附件存放在一个物理地址,服务器上或者阿里云上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值