springboot+java email发送邮箱报错javax.mail.MessagingException: Can‘t send command to SMTP host

背景

公司有个需求需要批量发送邮箱,但是每次短时间内频繁发送邮箱的时候总会报错

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: [EOF];
  nested exception is:
	javax.mail.MessagingException: Can't send command to SMTP host;
  nested exception is:
	java.net.SocketException: Connection closed by remote host
	at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:440)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:361)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:356)
	at org.zt.task.report.abs.AbstractProxyEmailGross.invoke(AbstractProxyEmailGross.java:76)
	at org.zt.task.report.service.gross.impl.GrossSendEmailMsgLogServiceImpl.synSendEmail(GrossSendEmailMsgLogServiceImpl.java:150)
	at org.zt.task.report.service.gross.impl.GrossSendEmailMsgLogServiceImpl.parseExcelAndSendEmail(GrossSendEmailMsgLogServiceImpl.java:128)
	at org.zt.task.report.service.gross.impl.GrossSendEmailMsgLogServiceImpl.sendEmail(GrossSendEmailMsgLogServiceImpl.java:79)
	at org.zt.task.report.listener.GrossProfitSendEmailLister.grossProfitSendEmail(GrossProfitSendEmailLister.java:65)
排查问题

首先看自己的配置是不是有问题,我这里用的是公司的腾讯企业微信邮箱

spring.mail.host=smtp.exmail.qq.com
spring.mail.username=公司企业微信账号
spring.mail.password=公司企业微信密码
spring.mail.port=587
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mime.splitlongparameters=false
spring.mail.default-encoding=utf-8
spring.mail.properties.smtp.socketFactory.port=993
spring.mail.properties.smtp.timeout=10000

这里我到处百度每个参数的作用,发现参数没什么问题
大家可以参考这个链接https://www.cnblogs.com/XingXiaoMeng/p/13531792.html
这是我在网上找到的具体的每个参数的含义

于是怀疑是邮箱限制,可能是频繁发送被关闭链接了。
解决方法

方法一:
刚开始尝试的是每次五封邮件让线程睡眠十分钟
发现还是有关闭链接的情况。
方法二:
每次发送一封邮件就让他睡眠三分钟,因为方法一可能存在某封邮件处理速度快,还是会导致频繁问题。

总结

一般这种报错如果不是配置问题,那就是邮箱发送频繁了。具体的邮箱发送上限限制也没有查到。也没时间去问企业微信客服,仅供参考~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值