springboot集成javaMail发送邮件

背景:

boss想做一个数据库定时查询,如果查询出异常结果就将异常信息都发送到指定邮箱中,于是用到了javaMail,下面就是利用springboot整合javaMail实现该需求。(为了能让大家更快的完成javaMail的集成,后续的集成步骤中有关db操作均跳过)

相关源码下载

  • springboot+javaMail集成后项目源码[推荐]

集成步骤:

  • 1 设置邮箱smtp服务器,并记录开启服务的授权密码,此部分操作不做赘述,大家可以参考开启邮箱的smtp服务器(以163邮箱为例)进行操作

  • 2 新建springboot项目,添加web、thymeleaf、javaMail依赖



    4.0.0

    com.dhcc
    mail_demo
    0.0.1-SNAPSHOT
    jar

    mail_demo
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.10.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        

        
        
            org.springframework.boot
            spring-boot-starter-mail
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


  • 3 项目配置
    application.properties中进行如下配置
server.port=9888

#javaMail配置(下面的 spring.mail.host 为发送邮箱的邮箱服务器)
spring.mail.host=smtp.163.com
[email protected]
spring.mail.password=password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

ps:上面提到的spring.mail.host为发送邮箱的邮箱服务器

  • 4 编写发送邮件的工具类SendMail
public class SendMail {
    //发送普通文本格式邮件
    public static void sendTextMail(MimeMessage message,String username,String recipient,String subject,List content){
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(username);
            helper.setTo(recipient);
            helper.setSubject(subject);
            StringBuffer sb = new StringBuffer();
            sb.append(content);
            helper.setText(sb.toString());
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    //发送html格式邮件
    public void sendHtmlMail(MimeMessage message,String username,String recipient, String subject, String content) {
        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(username);
            helper.setTo(recipient);
            helper.setSubject(subject);
            helper.setText(content, true);
            System.out.println("html格式邮件发送中...");
        } catch (MessagingException e) {
            System.out.println("html格式邮件发送失败!");
        }
    }
}
}
  • 5 编写service层,调用发送邮件方法
public interface MailService {
    /**
     * @Author: hobbes
     * @Description: 获得错误领导项目,并发送提示邮件
     * @Date: 创建于 11:53 2018/2/12 0012
     * @Param:
     * @return
     */
    String checkProject();
}
@Service
public class MailServiceImpl implements MailService {
    
    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public String checkProject(){
        try {
            SendMail sendMail = new SendMail();
            MimeMessage message = javaMailSender.createMimeMessage();
            String content = "

截止 " + format.format(new Date()) + " 业绩核算系统中错误领导项目,项目信息如下:

" + "" + "" + "
合同号项目名称客户名称合同总金额(元)合同实收款(元)签订日期项目所属领导提交人
11111111
"; sendMail.sendHtmlMail(message, "邮件发送者邮箱", "邮件接收者邮箱", "邮件标题", content); javaMailSender.send(message); }catch(Exception e){ //跳转至邮件发送失败页面 return "CheckError"; } //跳转至邮件发送成功页面 return "CheckSuccess"; } }

ps:此处只给出了调用发送html格式邮件的方法,普通文本格式邮件的调用更简单,可以对照着写

  • 6 controller层调用发送邮件的service
@Controller
@RequestMapping("/mail")
public class MailController {
    @Autowired
    private JavaMailSender javaMailSender;
    @Autowired
    private MailService mailService;

    @RequestMapping("/checkProject")
    public String checkProject(){
        return mailService.checkProject();
    }

}
  • 7 启动项目,访问localhost:9888/mail/checkProject


    springboot集成javaMail发送邮件_第1张图片
    运行成功.png

总结:

springboot和javaMail的集成很简单,主要就是获得发送者邮箱的smtp服务器地址和授权密码,做配置之后,调用自己手动封装好的发送邮件方法即可。

你可能感兴趣的:(springboot集成javaMail发送邮件)