spring:
mail:
# 邮箱服务器
host: smtp.163.com
# 邮箱账号
username: xxxx@163.com
# 邮箱密码
password: xxxxx
properties:
mail:
smtp:
starttls:
enable: true
required: true
auth: true
socketFactory:
# 邮箱SSL端口
port: 465
class: javax.net.ssl.SSLSocketFactory
其中password不是邮箱的密码,而是授权码,具体获取方式可进入到个人邮箱的设置页面,授权码可用于第三方进行邮箱的发送。
// 注入邮件相关服务
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private MessageService messageService;
// 发送简单的文本
void sendTextMail(){
MailDto mailDto = new MailDto();
// 发件人
mailDto.setFrom("xxx@163.com");
// 收件人,多个用,隔开
mailDto.setTo("xxxx@qq.com");
// 抄送人,多个用,隔开
mailDto.setCc("xxxx@qq.com");
// 密送,多个用,隔开
mailDto.setBcc("xxxx@qq.com");
// 是否是html文本,默认为false
mailDto.setHtml(false);
// 发送时间
mailDto.setSentDate(new Date());
// 邮件主题
mailDto.setSubject("测试发送邮件");
// 邮件内容
mailDto.setText("hello world");
// async为true时表示异步发送,将提交队列中
messageService.getMailService().sendSimpleMailMessage(javaMailSender, mailDto, true);
}
//发送Html
public void sendHtmlMail() throws Exception {
StringBuilder sb = new StringBuilder();
sb.append("<html><head></head>");
sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p></body>");
sb.append("</html>");
MailDto mailDto = new MailDto();
// 发件人
mailDto.setFrom("xxx@163.com");
// 收件人,多个用,隔开
mailDto.setTo("xxxx@qq.com");
// 抄送人,多个用,隔开
mailDto.setCc("xxxx@qq.com");
// 密送,多个用,隔开
mailDto.setBcc("xxxx@qq.com");
// 是否是html文本,默认为false
mailDto.setHtml(true);
// 发送时间
mailDto.setSentDate(new Date());
// 邮件主题
mailDto.setSubject("测试发送邮件");
// 邮件内容
mailDto.setText(sb.toString());
// 发送邮件
messageService.getMailService().sendMimeMessage(javaMailSender, mailDto, true);
}
如果想动态的切换邮箱的配置,可以手动初始化设置
//设置参数
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(host);
javaMailSender.setPort(port);
javaMailSender.setUsername(from);
javaMailSender.setPassword(password);
javaMailSender.setDefaultEncoding("utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.auth", "true");
javaMailSender.setJavaMailProperties(p);
MailDto mailDto = new MailDto();
// 发件人
mailDto.setFrom("xxx@163.com");
// 收件人,多个用,隔开
mailDto.setTo("xxxx@qq.com");
// 抄送人,多个用,隔开
mailDto.setCc("xxxx@qq.com");
// 密送,多个用,隔开
mailDto.setBcc("xxxx@qq.com");
// 是否是html文本,默认为false
mailDto.setHtml(false);
// 发送时间
mailDto.setSentDate(new Date());
// 邮件主题
mailDto.setSubject("测试发送邮件");
// 邮件内容
mailDto.setText("hello world");
// async为true时表示异步发送,将提交队列中
messageService.getMailService().sendSimpleMailMessage(javaMailSender, mailDto, true);