登录邮箱,在设置中找到SMTP服务,把它开启。
去mvn库搜索spring mail,找到Spring Boot Mail Starter,把相应配置复制到pom.xml。
在application.properties配置
#MailProperties
# 邮件服务器的域名
spring.mail.host=smtp.163.com
# 邮件服务器的端口
spring.mail.port=465
spring.mail.username=
spring.mail.password=
spring.mail.protocol=smtps
spring.mail.properties.mail.smtp.ssl.enable=true
其中密码写在邮箱中开启SMTP服务后获得或设置的密码。
示例写一个邮件发送类
@Component
public class MailClient {
private static final Logger logger = LoggerFactory.getLogger(MailClient.class);
//该对象由Spring Boot自动装配到Spring容器中
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from; //发件人
// public void sendMail(String to,String subject,String content) throws MessagingException {
public void sendMail(String to,String subject,String content) {
//添加异常的快捷键ctrl+alt+t
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
mailSender.send(helper.getMimeMessage());
} catch (MessagingException e) {
//e.printStackTrace();
logger.error("发送邮件失败"+e.getMessage());
}
}
}
其中JavaMailSender是Spring Email的核心组件,负责发送邮件,MimeMessage用于封装邮件的相关信息,MimeMessageHelper用于辅助构建MimeMessage对象。
如果发送邮件时要用到模板引擎,那么可以写为
@Autowired
private MailClient mailClient;
//该对象由Spring Boot自动装配到Spring容器中
@Autowired
private TemplateEngine templateEngine;
@Test //利用thymeleaf发邮件
public void testHtmlMail() throws MessagingException {
Context context = new Context();
// 把sunday赋值给username
context.setVariable("username","sunday");
// 把mail/demo动态模板与content内容组装好
String content = templateEngine.process("mail/demo",context);
System.out.println(content);
// 三个入参分别为收件人,邮件主题,邮件内容
mailClient.sendMail("yshuqiao@qq.com","HTML",content);
}