SpringBoot-JavaMailSender接口实战( 二 )

实现1.开启邮件服务这里以QQ邮箱为例 。
首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设置>>>点击账户>>>找到POP3|SMTP服务>>>点击开启(开启需要验证,验证成功后会有一串授权码用于发送邮件使用)>>>验证成功

SpringBoot-JavaMailSender接口实战

文章插图
  • 第二步
    SpringBoot-JavaMailSender接口实战

    文章插图
  • 编写发送邮件方法编写邮件业务类MailService.
    主要通过MailService工具类就可以满足发送java邮件的需要 。当我们进行好 yml 配置后,SpringBoot会帮助我们自动配置 JavaMailSender 我们通过这个java类就可以实现操作java来发送邮件 。
    发送纯文本邮件servicepackage com.galaxy.mailsender.service;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.mail.javamail.JavaMailSenderImpl;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.stereotype.Service;import javax.mail.MessagingException;import java.util.Date;/** * 邮件业务类 * @author Galaxy */@Servicepublic class MailService {/*** 注入邮件工具类*/@Autowiredprivate JavaMailSenderImpl javaMailSender;@Value("${spring.mail.username}")private String sendMailer;/*** 检测邮件信息类* @param to* @param subject* @param text*/private void checkMail(String to,String subject,String text){if(StringUtils.isEmpty(to)){throw new RuntimeException("邮件收信人不能为空");}if(StringUtils.isEmpty(subject)){throw new RuntimeException("邮件主题不能为空");}if(StringUtils.isEmpty(text)){throw new RuntimeException("邮件内容不能为空");}}/*** 发送纯文本邮件* @param to* @param subject* @param text*/public void sendTextMailMessage(String to,String subject,String text){try {//true 代表支持复杂的类型MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true);//邮件发信人mimeMessageHelper.setFrom(sendMailer);//邮件收信人1或多个mimeMessageHelper.setTo(to.split(","));//邮件主题mimeMessageHelper.setSubject(subject);//邮件内容mimeMessageHelper.setText(text);//邮件发送时间mimeMessageHelper.setSentDate(new Date());//发送邮件javaMailSender.send(mimeMessageHelper.getMimeMessage());System.out.println("发送邮件成功:"+sendMailer+"->"+to);} catch (MessagingException e) {e.printStackTrace();System.out.println("发送邮件失败:"+e.getMessage());}}}Controllerpackage com.galaxy.mailsender.controller;import com.galaxy.mailsender.service.MailService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MailController {@Autowiredprivate MailService mailService;/*** 发送文本邮件* @param to* @param subject* @param text*/@RequestMapping("/sendTextMail")public void sendTextMail(String to,String subject,String text){mailService.sendTextMailMessage(to,subject,text);}}测试
    SpringBoot-JavaMailSender接口实战

    文章插图

    SpringBoot-JavaMailSender接口实战

    文章插图
    结果
    SpringBoot-JavaMailSender接口实战

    文章插图
    补充发送html邮件Spring Boot支持使用HTML发送邮件是通过MimeMessage来完成的 。
    发送带附件的邮件MimeMessageHelper支持发送复杂邮件模板,支持文本、附件、HTML、图片等 。比如需要发送附件,则在上面的代码中通过调用helper的addAttachment(fileName, file)方法即可 。
    例:发送HTML邮件package com.example.emaildemo.controller;import com.example.emaildemo.service.MailService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * 测试邮件发送 * @author galaxy */@RestControllerpublic class SendMailController {@Autowiredprivate MailService mailService;/*** 发送HTML邮件* @param to* @param subject* @param content*/@RequestMapping("/sendHtmlMailMessage")public void sendHtmlMailMessage(String to,String subject,String content){mailService.sendHtmlMailMessage(to,subject,content);}}

    经验总结扩展阅读