• Java使用springboot发送邮件


    废话不说直接上代码!!!

    pom文件:

    <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--   引入邮件的starter     -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>

    MailService:

    package com.xieh.mail.service;
    
    
    import javafx.util.Pair;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Component;
    import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
    import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
    import org.thymeleaf.TemplateEngine;
    import org.thymeleaf.context.Context;
    import freemarker.template.Configuration;
    import javax.mail.internet.MimeMessage;
    
    
    import java.io.File;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    /**
     * @author 谢辉
     * @Classname MailService
     * @Description TODO
     * @Date 2020/11/24 10:08
     */
    @Component
    public class MailService {
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
        @Autowired
        private JavaMailSender mailSender;
    
        @Value("${spring.mail.username}")
        private String sender;
    
        /**
         * 用来发送模版邮件
         */
        @Autowired
        private TemplateEngine templateEngine;
    
        //发送邮件的模板引擎
        @Autowired
        private FreeMarkerConfigurer configurer;
    
    
        /**
         * 发送简单的邮件
         * @param receiver 接收者
         * @param subject 主题
         * @param context 内容
         */
        public void sendSimpleMail(String receiver,String subject, String context){
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            mailMessage.setFrom(sender);
            mailMessage.setTo(receiver);
            mailMessage.setSubject(subject);
            mailMessage.setText(context);
            try {
                mailSender.send(mailMessage);
                logger.info("简单邮件发送成功!接收者是:" + receiver);
            }catch (Exception e){
                e.printStackTrace();
                logger.error("简单邮件发送失败!");
            }
        }
    
    
        /**
         * 发送html的邮件
         * @param receiver 接收者
         * @param subject 主题
         * @param context 内容
         */
        public void sendHtmlMail(String receiver,String subject, String context){
            MimeMessage mimeMailMessage = mailSender.createMimeMessage();
            try{
                MimeMessageHelper helper = new MimeMessageHelper(mimeMailMessage,true,"UTF-8");
                helper.setFrom(sender);
                helper.setTo(receiver);
                helper.setSubject(subject);
                helper.setText(context,true);
                mailSender.send(mimeMailMessage);
                logger.info("html邮件发送成功!接收者是:" + receiver);
            }catch (Exception e){
                e.printStackTrace();
                logger.error("html邮件发送失败!");
            }
        }
    
    
        /**
         * 使用Freemarker模板发送邮件
         * @param receiver 接收者
         * @param subject 主题
         * @param params 参数
         */
        public void sendFreemarkerTemplateMail(String receiver, String subject, Map<String, Object> params){
            MimeMessage mimeMailMessage = mailSender.createMimeMessage();
            try{
                MimeMessageHelper helper = new MimeMessageHelper(mimeMailMessage,true,"UTF-8");
                helper.setFrom(sender);
                helper.setTo(receiver);
                helper.setSubject(subject);
                Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
                //设置编码
                configuration.setDefaultEncoding("utf-8");
                //ftl模板文件
                configuration.setClassForTemplateLoading(this.getClass(), "/static/");
    
                String html = FreeMarkerTemplateUtils.processTemplateIntoString(configuration.getTemplate("mail.ftl"), params);
                helper.setText(html, true);//重点,默认为false,显示原始html代码,无效果
                mailSender.send(mimeMailMessage);
                logger.info("Freemarker邮件发送成功!接收者是:" + receiver);
            }catch (Exception e){
                e.printStackTrace();
                logger.error("Freemarker邮件发送失败!");
            }
    
        }
    
        /**
         * 使用Thymeleaf模板发送邮件
         * @param receiver 接收者
         * @param subject 主题
         * @param params 参数
         */
        public void  sendThymeleafTemplateMail(String receiver, String subject, Map<String, Object> params){
            MimeMessage mimeMailMessage = mailSender.createMimeMessage();
            //创建邮件正文
            Context context = new Context();
            if(params != null){
               Set<Map.Entry<String, Object>> entrySet = params.entrySet();
               for (Map.Entry<String, Object> entry : entrySet){
                   context.setVariable(entry.getKey(),entry.getValue());
               }
            }
            try{
                MimeMessageHelper helper = new MimeMessageHelper(mimeMailMessage,true,"UTF-8");
               /* context.setVariable("user", "1111");
                context.setVariable("web", "tttt");
                context.setVariable("company", "我是一个公司");
                context.setVariable("product","我是一个产品");*/
                helper.setFrom(sender);
                helper.setTo(receiver);
                helper.setSubject(subject);
    
                // 这里是去找(resources的)templates目录下的mail目录下的mail.html文件
                //  String emailContent = templateEngine.process("/mail/mail",context); //指定模板路径
    
                // 这里是去找(resources的)templates目录下的emailTemplate.html文件
                String emailContent = templateEngine.process("emailTemplate", context);
                helper.setText(emailContent,true);
                mailSender.send(mimeMailMessage);
                logger.info("Thymeleaf邮件发送成功!接收者是:" + receiver);
            }catch (Exception e){
                e.printStackTrace();
                logger.error("Thymeleaf邮件发送失败!");
            }
        }
    
    
        /**
         * 发送带附件的邮件
         * @param receiver 接收者
         * @param subject 主题
         * @param context 内容
         * @param attachments 附件
         */
        public void sendAttachmentsMail(String receiver, String subject, String context, List<Pair<String, File>> attachments) {
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = null;
            try {
                helper = new MimeMessageHelper(message, true,"UTF-8");
                helper.setFrom(sender);
                helper.setTo(receiver);
                helper.setSubject(subject);
                helper.setText(context, true);
                if(attachments != null){
                    for(Pair<String,File> attachment:attachments){
                        FileSystemResource file = new FileSystemResource(attachment.getValue());
                        helper.addAttachment(attachment.getKey(), file);
                    }
                }
                mailSender.send(message);
                logger.info("附件邮件发送成功!接收者是:" + receiver);
            } catch (Exception e) {
                e.printStackTrace();
                logger.info("附件邮件发送失败!");
            }
        }
    
    
    
    
    }

    源码地址:https://gitee.com/xieh-gitee/SpringBootEMail

    效果图:

  • 相关阅读:
    程序人生2008年(49)
    多种方式实现字符串/无符号数反向输出_栈_递归_头尾指针
    Ebusiness suite system service management ( EBS服务管理)
    文件系统FatFsR0.09a翻译(三):ff.h
    cocurrent request,program,process 并发请求,程序,进程的概念
    Laravel 5.* 执行seeder命令出现错误的解决方法
    Laravel修改配置后一定要清理缓存 "php artisan config:clear"!
    laravel构造函数和中间件执行顺序问题
    Laravel5.3使用学习笔记中间件
    laravel 是怎么做到运行 composer dumpautoload 不清空 classmap 映射关系的呢?
  • 原文地址:https://www.cnblogs.com/xiejn/p/14030140.html
Copyright © 2020-2023  润新知