一、引入maven依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二、配置邮件信息
mail:
host: smtp.xxx.com
username: xxx.com
port: 465
password: xxx
default-encoding: UTF-8
properties:
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
protocol: smtps
如果这里指定465端口,该端口和项目服务端口不冲突。邮件发送协议必须是smtps 不指定发送邮件时会报错,所以必须指定protocol配置为smtps
三、代码
@Autowired
JavaMailSender javaMailSender;
private void sendMail() {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
//附件发送
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");//true表示支持附件并解码中文
mimeMessageHelper.setFrom(eMailConfiguration.sendUser, "发送者");
String[] sary = {"xxx.com", "xxx@qq.com"};//接收者集合
mimeMessageHelper.setTo(sary);//接受者
mimeMessageHelper.setSubject("主题");
mimeMessageHelper.setCc(sary);//抄送
mimeMessageHelper.setText("正文", true);//指定true表示解码中文
mimeMessageHelper.addAttachment(MimeUtility.encodeWord("文件名称", "utf-8", "B"), new File("文件地址"));//解码文件名称中文乱码情况
javaMailSender.send(mimeMessage);\\发送文件
} catch (MessagingException e) {
throw new RuntimeException(e);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
四、使用时遇到的问题
465端口发送异常,配置stmps协议。
附件发送时文件名称乱码问题,指定中文解码方式 MimeUtility.encodeWord("文件名称", "utf-8", "B")