一、相关配置&代码
springboot pom文件配置,将自动导入javax.mail-1.6.2.jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
yaml文件配置如下:
spring:
mail:
# 邮件服务地址
host: xxx
# 端口,可不写默认
port: xxx
# 编码格式
default-encoding: utf-8
# 用户名,发送者的邮箱
username: xxx
# 授权码,发送者邮箱的密码/从第三方平台获取的授权码
password: xxx
# 其它参数
properties:
mail:
smtp:
# 如果是用 SSL 方式,需要配置如下属性,使用qq邮箱的话需要开启
ssl:
enable: false
required: false
# 邮件接收时间的限制,单位毫秒
timeout: 10000
# 连接时间的限制,单位毫秒
connectiontimeout: 10000
# 邮件发送时间的限制,单位毫秒
writetimeout: 10000
java发送邮件代码:
@Autowired
private JavaMailSender javaMailSender;
public void sendEmail(String from, String recipient, String subject, String text)
throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
// true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(new InternetAddress(from));
helper.setTo(recipient);
helper.setSubject(subject);
helper.setText(text, true);
javaMailSender.send(message);
}
二、分析问题
利用java发送邮件时,在本地windows上进行测试发送邮件时没有问题,当部署到k8s服务器上之后始终报如下错误:
Caused by: javax.mail.AuthenticationFailedException: 334 TlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWAQAAAAA=
Caused by: java.lang.ArrayIndexOutOfBoundsException: null
这里需要说明一点:上面yaml配置文件中的host配置的是我们公司企业邮箱服务器,并非163或qq的,使用163或qq邮箱目前没有发现相同的问题!
网上查找后发