SpringBoot发送Mail邮件
前言
邮件服务在注册绑定账号或者信息通知的时候,是非常有必要的.本文介绍springboot发送邮件服务.让各位看官能亲自体验,也能很方便的接入到项目中.
准备工作
1:开启163邮箱POP3/SMTP/IMAP服务:
首先登陆自己的163账号.找到设置
通过指示发送短信开启服务,会弹出授权码.(只会展示一次请保管好).
2:开启QQ邮箱POP3/SMTP/IMAP服务:
通过指示发送短信开启服务,会弹出授权码.(只会展示一次请保管好).
类型 | 服务器名称 | 服务器地址 | SSL协议端口号 | 非SSL协议端口号 |
---|---|---|---|---|
收件服务器 | POP | pop.163.com | 995 | 110 |
收件服务器 | IMAP | imap.163.com | 993 | 143 |
收件服务器 | SMTP | smtp.163.com | 465/994 | 25 |
SpringBoot 配置准备:
springboot 自带邮件发送服务,引入配置pom:
<!-- email -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
yml配置:
mail:
# qq
# host: smtp.qq.com
# 163
host: smtp.163.com
port: 587
username: XXXXXXX@163.com
# password: 此密码为 上面服务启用的授权码
password: XXXXXXX
protocol: smtp
default-encoding: UTF-8
properties:
mail.smtp.auth: true
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
mail.smtp.socketFactory.port: 465
mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback: false
编码实现
1: 邮件发送代码实现:
/**
* 发送邮件
* @param to 发送到
* @param subject 主题
* @param text 内容
*/
@Async
@Override
public void sendMail(String to, String subject, String text) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
mailSender.send(message);
log.info("发送邮件成功");
} catch (MessagingException e) {
log.error("发送邮件失败",e.toString());
throw new BusinessException("发送邮件失败");
}
}
2: 带附件的邮件发送:
/**
* 发送邮件
*
* @param to 发送到
* @param subject 主题
* @param text 内容
* @param attachFiles 附件
*/
@Async
@Override
public void sendMailAttachments(String to, String subject, String text, List<String> attachFiles) {
MimeMessage message=mailSender.createMimeMessage();
try {
MimeMessageHelper helper=new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
//验证附件数据是否为空
if(null != attachFiles){
FileSystemResource file=null;
for (String attachFile : attachFiles) {
//添加附件
file = new FileSystemResource(attachFile);
helper.addAttachment(attachFile.substring(attachFile.lastIndexOf("/")+1), file);
}
}
mailSender.send(message);
log.info("带附件的邮件发送成功");
}catch (Exception e){
log.error("发送带附件的邮件失败",e.toString());
throw new BusinessException("发送邮件失败");
}
}
前段案列
基于邮件发送实现案列demo,结合前段让看官可以亲自体验测试:
发送后收到邮件如下:
体验地址: http://132.232.43.102
账号:guest
密码:guest
常见案列 -> 发送邮件
后续介绍 freemarker模板发送邮件服务