SpringBoot专栏:邮件发送?对,加篇不降量,收转发版(第17讲)

SpringBoot专栏:邮件发送?对,加篇不降量,收转发版(第17讲)

前言

邮件发送有很多有意思的应用场景,但是鉴于时间原因,本章节先讲解简单的发送普通邮件、发送html邮件、发送支持带附件的邮件3种方式,在之后的"架构讲解专栏"将融合前面所学章节进行整合,开发属于更多有意思的小demo。

正文

本章节以springboot-10-email-async模块例进行讲解(代码文末共享)SpringBoot专栏:邮件发送?对,加篇不降量,收转发版(第17讲)

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邮箱获取方式如下

SpringBoot专栏:邮件发送?对,加篇不降量,收转发版(第17讲)

2)qq邮箱获取授权码

SpringBoot专栏:邮件发送?对,加篇不降量,收转发版(第17讲) 

 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.结果(发送成功)

SpringBoot专栏:邮件发送?对,加篇不降量,收转发版(第17讲)

6.友情提示

现在邮箱反垃圾策略弄得特别"严",所以不要利用程序短时间频繁发,不同的用户每分钟发送都是有限制的尽量叉开时间段发送,否则疯了IP就不那么ok了.

End

临近2019,在这提前祝大家新年快乐。SpringBoot专栏也即将结束,感谢大家的一路陪伴,感谢有您。

微服务架构专栏即将开启~~~没上车的点个关注 今日头条@架构师速记 

最后谢谢大家

坚持写作1个月了,现在发现朋友的一次转发、关注是对本文的最大支持,鼓励下,转发支持一次,谢谢