SpringBoot之发送邮件JavaMailSender

邮件在日常工作中有很多场景需求,监控提醒、告警信息等。现在用springboot开发一个定时发送邮件的微服务,来满足工作需求。

一、boot项目,引入 mail starter,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

二、mail 工具类

常用的邮件实例有SimpleMailMessage和MimeMailMessage,这里我们以SimpleMailMessage为例,MimeMailMessage功能更丰富,大家可以自己去探讨。

写了一个工具类,供参考,其中setTo、setCc、setBcc方法都是用的String...的方法,支持传入多个收件人、抄送人。

@Component
public class EmailTool {

    protected static final Logger logger = LoggerFactory.getLogger(EmailTool.class);

    public static final String ZSZT = "[email protected]";

    @Autowired
    private JavaMailSender mailSender;

    public void sendEmail(Map<String, String> map){
        String to = map.get("E_TO");
        String cc = map.get("E_CC");
        String bcc = map.get("E_BCC");
        String subject = map.get("E_SUBJECT");
        String text = map.get("E_CONTENT");

        if(to!=null){
            try {
                SimpleMailMessage message = new SimpleMailMessage();
                message.setFrom(ZSZT);
                message.setTo(to.split(","));
                if(cc!=null){
                    message.setCc(cc.split(","));
                }
                if(bcc!=null){
                    message.setBcc(bcc.split(","));
                }
                message.setSubject(subject);
                message.setText(text);
                mailSender.send(message);
            } catch (Exception e){
                logger.error("EmailTool ---> sendEmail() --- error");
                e.printStackTrace();
            }
        } else {
            logger.warn("EmailTool sendEmail() -- to == null");
        }

    }

}

三、后续和定时

工具类调试通过后,需要外部的map参数输入,这就根据自己的具体业务逻辑输入就可以了。定时任务的话可参考SpringBoot之定时任务和Cron表达式配置,首先引入 spring-boot-starter-quartz 依赖,然后按照cron表达式配置job就可以了。

发布了125 篇原创文章 · 获赞 116 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shipfei_csdn/article/details/103698426