1.把邮箱的SMTP服务启动
打开之后会叫你发短信启动服务,有一个授权码 记下来 后面要用到
2.导入Jar包
搜索spring mail的jar包,
选择最新版本
把dependency中间的复制到pom.xml中
3. 配置application.properties(邮箱配置)
- spring.mail.host
代表服务器地址
一般都会有在邮箱配置中找到。
- spring.mail.protocl
指定协议
smtps 加个S代表启用的是安全的协议 - spring.mail.properties.mail.smtp.ssl.enable = true
代表的是采用ssl安全连接
4.启用JavaMailSender发送邮件
提示:最好封装起来 以便多次使用
@Component
//表示需要由Spring容器去管理 是通用的BEan 哪个层次都可以用
public class MailClient {
//记录日志
private static final Logger logger = LoggerFactory.getLogger(MailClient.class);
@Autowired
private JavaMailSender mailSender;
//邮件是谁发送的 固定下来
@Value("${spring.mail.username}")
private String from;
//邮件发送给谁,标题,内容
public void sendMail(String to, String subject, String content) {
try {
//createMimeMessage可以创建对象
MimeMessage message = mailSender.createMimeMessage();
//spring给我们提供了帮助类 MimeMessageHelper 利用它就可以把邮件构建好
MimeMessageHelper helper = new MimeMessageHelper(message);
//传内容
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
//允许支持html文本
helper.setText(content, true);
//发送出去
mailSender.send(helper.getMimeMessage());
} catch (MessagingException e) {
//如果发生异常 就记日志
logger.error("发送邮件失败:" + e.getMessage());
}
}
}
再写一个测试类测试
写一个html 引用thyme leaf模板
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class MailTests {
@Autowired
private MailClient mailClient;
@Autowired
//注入thymeleaf模板引擎
private TemplateEngine templateEngine;
@Test
public void testTextMail(){
//调用方法
mailClient.sendMail("XXXX@163.com","Test","welcome");
}
@Test
public void testHtmlMail(){
// thymeleaf模板引擎传参
Context context = new Context();
context.setVariable("username","sunday");
String content = templateEngine.process("/mail/demo.html", context);
System.out.println(content);
mailClient.sendMail("XXXX@163.com","Html",content);
}
}