Java发送QQ邮件失败

问题1: 最近QQ邮箱发布了一个重要公告“SMTP/IMAP即将启用SSL/TLS加密”。启用后导致邮箱服务发送失败

Caused by: cn.hutool.extra.mail.MailException: AuthenticationFailedException: 530 Login fail. A secure connection is requiered(such as ssl). More information at https://help.mail.qq.com/detail/0/1010

	at cn.hutool.extra.mail.Mail.send(Mail.java:398)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:416)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:143)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:126)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:67)
	at com.ruoyi.quartz.task.BidsTask.sendEmail(BidsTask.java:260)
	at com.ruoyi.quartz.task.BidsTask.getBids(BidsTask.java:78)
	... 10 common frames omitted
Caused by: javax.mail.AuthenticationFailedException: 530 Login fail. A secure connection is requiered(such as ssl). More information at https://help.mail.qq.com/detail/0/1010

	at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)
	at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at cn.hutool.extra.mail.Mail.doSend(Mail.java:412)
	at cn.hutool.extra.mail.Mail.send(Mail.java:390)
	... 16 common frames omitted

解决1: 我开启了使用SSL安全连接发送邮件,这里我使用的Hutool的邮件工具进行发送

# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
host = smtp.qq.com
# 发件人(必须正确,否则发送失败)
from = xxxxxxxxxx@qq.com
# 邮件服务器的SMTP端口,可选,默认25
port = 465
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
pass = xxxxxxxxxxx
# 使用SSL安全连接,SSL使用端口465,STARTTLS使用587
sslEnable = true

问题2: 开启ssl后仍然报错,错误的意思是没有合适的协议(协议被禁用或密码套件不合适)
注:jdk版本为17.0.12

Caused by: cn.hutool.extra.mail.MailException: MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465
	at cn.hutool.extra.mail.Mail.send(Mail.java:398)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:416)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:143)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:126)
	at cn.hutool.extra.mail.MailUtil.send(MailUtil.java:67)
	at com.ruoyi.quartz.task.BidsTask.sendEmail(BidsTask.java:260)
	... 10 common frames omitted
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at cn.hutool.extra.mail.Mail.doSend(Mail.java:412)
	at cn.hutool.extra.mail.Mail.send(Mail.java:390)
	... 15 common frames omitted
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
	at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:172)
	at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:103)
	at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:247)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:448)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
	at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:354)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:211)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
	... 23 common frames omitted

解决2: 修改java安装目录jdk\conf\security\java.security文件,删除SSLv3, TLSv1, TLSv1.1

# 修改前
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, \
    MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
# 修改后
jdk.tls.disabledAlgorithms=DTLSv1.0, RC4, DES, \
    MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值