java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot JavaMailSender发送邮件

SpringBoot JavaMailSender发送邮件功能(实例详解)

作者:Mr.朱鹏

JavaMailSender是Spring提供的,非常好用的,实现邮件发送的接口 ,这篇文章主要介绍了SpringBoot JavaMailSender发送邮件功能,需要的朋友可以参考下

JavaMailSender是什么

JavaMailSender是Spring提供的,非常好用的,实现邮件发送的接口

在Spring Boot的Starter模块中也为此提供了自动化配置,支持发送邮件

JavaMailSenderImpl是spring封装的邮件发送封装类,支持普通文本、附件、html。

发送简单邮件

简单邮件就是指邮件内容是一个普通的文本文档

public class MailTest {
    @Autowired
    private JavaMailSender javaMailSender;
    @Autowired
    private TemplateEngine templateEngine;
    @Test
    public void sendSimpleMail() {
        SimpleMailMessage message = new SimpleMailMessage();    // 构建一个邮件对象
        message.setSubject("邮件主题:这是一封测试邮件");            // 设置邮件主题
        message.setFrom("xxx@qq.com");                    // 设置邮件发送者
        message.setTo("xxx@xx.cn");                 // 设置邮件接收者,可以有多个接收者
//        message.setCc("xx@xx.cn");               // 设置邮件抄送人,可以有多个抄送人
//        message.setBcc("xx@xx.cn");              // 设置隐秘抄送人,可以有多个
        message.setSentDate(new Date());                        // 设置邮件发送日期
        String mailMsg = "这是由Springboot发送的第一封简单测试邮件,发件人:xx-哈哈";
        message.setText(mailMsg);                               // 设置邮件的正文
        javaMailSender.send(message);                           // 发送邮件
    }

发送带附件的邮件

图片、普通文件,都是支持的

  @Test
    public void sendAttachFileMail() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject("邮件主题:这是一封测试带附件的邮件");
        helper.setFrom("xx@qq.com");
        helper.setTo("xx@qq.com");
//        helper.setCc("xx@xx.cn");
//        helper.setBcc("xx@xx.cn");
        helper.setSentDate(new Date());
        helper.setText("这是由Springboot发送的第二封带附件的邮件,发件人:x-哈哈");
        File file = new File("/Users/xx/朱x/朱x.jpg");
        helper.addAttachment("xx.jpg", file);
        javaMailSender.send(mimeMessage);
    }

发送带图片资源的邮件

图片资源和附件有什么区别呢?图片资源是放在邮件正文中的,即一打开邮件,就能看到图片。但是一般来说,不建议使用这种方式,一些公司会对邮件内容的大小有限制(因为这种方式是将图片一起发送的)。

 @Test
    public void sendImgResMail() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject("邮件主题:这是一封测试带图片资源的邮件");
        helper.setFrom("xx@qq.com");
        helper.setTo("xx@qq.com");
        helper.setSentDate(new Date());
        helper.setText("<p>hello 大家好,这是一封测试邮件,这封邮件包含两种图片,分别如下</p><p>第一张图片:</p><img src='cid:p01'/><p>第二张图片:</p><img src='cid:p02'/>", true);
        helper.addInline("p01", new FileSystemResource(new File("/Users/xx/朱x/xx.jpg")));
        helper.addInline("p02", new FileSystemResource(new File("/Users/zhupeng/xx/WechatIMG47.jpg")));
        javaMailSender.send(mimeMessage);
    }

使用 Freemarker 作邮件模板

在公司实际开发中,第一种和第三种都不是使用最多的邮件发送方案。因为正常来说,邮件的内容都是比较的丰富的,所以大部分邮件都是通过 HTML 来呈现的,
如果直接拼接 HTML 字符串,这样以后不好维护,为了解决这个问题,一般邮件发送,都会有相应的邮件模板。
最具代表性的两个模板就是 Freemarker 模板和 Thyemeleaf 模板了

    @Test
    public void sendFreemarkerMail() throws MessagingException, IOException, TemplateException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject("邮件主题:这是一封Freemarker渲染的邮件");
        helper.setFrom("xx@qq.com");
        helper.setTo("xx@qq.com");
        helper.setSentDate(new Date());
        // 构建 Freemarker 的基本配置
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_0);
        configuration.setClassLoaderForTemplateLoading(MailTest.class.getClassLoader(), "templates");
        Template template = configuration.getTemplate("mail_freemarker.ftl");
        // 模板渲染,渲染的结果将被保存到 out 中 ,将out 中的 html 字符串发送即可
        StringWriter out = new StringWriter();
        template.process(new User(1001, "xx", 10000.00), out);
        helper.setText(out.toString(), true);
        javaMailSender.send(mimeMessage);
    }

使用 Thymeleaf 作邮件模板,带附件+图片

  public void sendThymeleafMail() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject("邮件主题:这是一封Thymeleaf渲染的邮件");
        helper.setFrom("xx@qq.com");
        helper.setTo("xx@qq.com");
        helper.setSentDate(new Date());
        File file = new File("/Users/xx/xx/xx.jpg");
        helper.addAttachment("xx.jpg", file);
        helper.setText("<p>hello 大家好,这是一封测试邮件,这封邮件包含一种图片,如下</p><p>第一张图片:</p><img src='cid:p01'/>", true);
        helper.addInline("p01", new FileSystemResource(new File("/Users/xx/朱x/朱x.jpg")));
        Context context = new Context();
        context.setVariable("userName", "朱xx");
        context.setVariable("num", "000001");
        context.setVariable("salary", "99999");
        String process = templateEngine.process("mail_thymeleaf.html", context);
        helper.setText(process, true);
        javaMailSender.send(mimeMessage);
    }

到此这篇关于SpringBoot JavaMailSender发送邮件功能的文章就介绍到这了,更多相关SpringBoot JavaMailSender发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文