SpringBoot专栏:邮件发送?对,加篇不降量,收转发版(第17讲)
前言
邮件发送有很多有意思的应用场景,但是鉴于时间原因,本章节先讲解简单的发送普通邮件、发送html邮件、发送支持带附件的邮件3种方式,在之后的"架构讲解专栏"将融合前面所学章节进行整合,开发属于更多有意思的小demo。
正文
本章节以springboot-10-email-async模块例进行讲解(代码文末共享)
1.pom文件引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.配置文件
spring:
mail:
host: smtp.163.com
port: 25
username: [email protected]
password: 密码或者授权码(建议使用)
protocol: smtp
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
timeout: 25000
说明:password尽量用授权码防止密码泄露
小插曲如何获取授权码:
1)163邮箱获取方式如下
2)qq邮箱获取授权码
3.service方法
@Service
public class SleepService {
@Autowired
private JavaMailSenderImpl mailSender;
private static final String fromAddr="[email protected]";
private static final String toAddr="[email protected]";
private static final String company="LP框架官网";
/**********************邮件测试*******************************/
/**
* 普通文本发送 【1】
*/
public void sendSimpleMail() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
// 设置收件人,寄件人
simpleMailMessage.setTo(new String[] {"[email protected]"});
simpleMailMessage.setFrom("[email protected]");
simpleMailMessage.setSubject("普通文本");
simpleMailMessage.setText("SpringBoot邮件发送内容页。");
// 发送邮件
mailSender.send(simpleMailMessage);
System.out.println("邮件已发送");
}
/**
* 发送包含HTML文本的邮件【2】
* @throws Exception
*/
public void sendHtmlMail() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
mimeMessageHelper.setTo(toAddr);
mimeMessageHelper.setFrom(fromAddr,company);
//设置标题
mimeMessageHelper.setSubject("发送邮件测试【支持html】");
StringBuilder sb = new StringBuilder();
sb.append("<html><head></head>");
sb.append("<body><h1>邮件测试Html</h1><p>这是一封html的邮件</p></body>");
sb.append("</html>");
// 启用html
mimeMessageHelper.setText(sb.toString(), true);
// 发送邮件
mailSender.send(mimeMessage);
}
/**
*
* @throws Exception
*/
// @Async
public void sendAttendedFileMail() throws Exception {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// multipart模式
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
mimeMessageHelper.setTo(toAddr);
mimeMessageHelper.setFrom(fromAddr);
mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【附件】");
StringBuilder sb = new StringBuilder();
sb.append("<html><head></head>");
sb.append("<body><h1>spring 邮件测试</h1><p>这是一封带附件的邮件</p></body>");
sb.append("</html>");
// 启用html
mimeMessageHelper.setText(sb.toString(), true);
// 设置附件
FileSystemResource img = new FileSystemResource(new File("D:/1.jpg"));
mimeMessageHelper.addAttachment("image.jpg", img);
// 发送邮件
mailSender.send(mimeMessage);
}
}
注意:邮件理应设置异步发送的(可以结合上篇博文 异步发送)
4.测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot10EmailAsyncApplicationTests {
@Autowired
SleepService sleepService;
@Test
public void contextLoads() {
}
@Test
public void sendSimpleMail() throws Exception {
sleepService.sendSimpleMail();
}
/**
* 发送包含HTML文本的邮件
* @throws Exception
*/
@Test
public void sendHtmlMail() throws Exception {
sleepService.sendHtmlMail();
}
/**
* 发送包含附件的邮件
* @throws Exception
*/
@Test
public void sendAttendedFileMail() throws Exception {
sleepService.sendAttendedFileMail();
}
}
5.结果(发送成功)
6.友情提示
现在邮箱反垃圾策略弄得特别"严",所以不要利用程序短时间频繁发,不同的用户每分钟发送都是有限制的,尽量叉开时间段发送,否则疯了IP就不那么ok了.
End
临近2019,在这提前祝大家新年快乐。SpringBoot专栏也即将结束,感谢大家的一路陪伴,感谢有您。
微服务架构专栏即将开启~~~没上车的点个关注 今日头条@架构师速记
最后谢谢大家
坚持写作1个月了,现在发现朋友的一次转发、关注是对本文的最大支持,鼓励下,转发支持一次,谢谢