微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

springboot+qq邮箱发送邮件

  1. 开启POP3/SMTP服务

  2. 获取邮箱授权码

  3. 纯文本邮件发送

  4. 文本内容为html发送

  5. 邮件添加附件发送

开启POP3/SMTP服务

 

获取邮箱授权码

 

纯文本邮件发送

  1. 建立一个普通项目,导入依赖(使用了parent,所以版本没管)

            <!--        邮件依赖-->
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-mail</artifactId>
           </dependency>
  2. 配置邮件发送

    spring:
    mail:
       #smtp服务主机 QQ邮箱则为smtp.qq.com
      host: smtp.qq.com
       #服务协议
      protocol: smtp
       # 编码集
      default-encoding: UTF-8
       #发送邮件QQ邮箱
      username: [email protected]
       #授权码
      password: xxx(16位)
      test-connection: true
      properties:
        mail:
          smtp:
            auth: true
            starttls:
              enable: true
              required: true
  3. 配置发送信息:其中SimpleEmailEntity类是获取前端上传的参数,参数来源不重要,from表示发送人的账号,subject表示邮件标题,text表示邮件内容,tos表示发给谁,里面可以是多个人的邮箱如["[email protected]","[email protected]"]

    @Service
    public class EmailServiceImpl extends LogConf implements EmailService {
    @Value("${spring.mail.username}")
    private String from;

    @Autowired
    private JavaMailSender mailSender;

    @Override
    public void sendSimpleMail(SimpleEmailEntity simpleEmailEntity) {
           
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setSubject(simpleEmailEntity.getSubject());
    message.setText(simpleEmailEntity.getContent());
    message.setTo(simpleEmailEntity.getTos());
           
    logger.info("开始发送信息给:{}",simpleEmailEntity.getTos());
    try {
    mailSender.send(message);
    }catch (Exception e){
    logger.info("发送信息失败,原因:{}",e.getMessage());
    }


    }
    }

    相关实体和内容


    @Data
    public class SimpleEmailEntity {

    /**

    * 主题
    */
    private String subject;

    /**

    * 主题内容
    */
    private String content;

    /**

    * 接收人邮箱列表
    */
    private String[] tos;
    }
    {
      "tos": ["[email protected]"],
      "subject": "Hello 小..",
      "content": "亲爱的小..,万分感谢你能在忙碌之中抽出时间来看这封信,虽然这封信啥都没说,哈哈哈"
    }
  4. 发送html类邮件(可以实现发送图片),关键点:定义了MimeMessage、MimeMessageHelper,图片添加时有一个key,这个key是html中图片的cid值,这点不对应不能发送图片

    @Override
    public void sendImage(SimpleEmailEntity simpleEmailEntity) {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper mineHelper = null;
    try {
    mineHelper= new MimeMessageHelper(message, true);
    mineHelper.setFrom(from);
    mineHelper.setSubject(simpleEmailEntity.getSubject());
    mineHelper.setText("<html><body><h1>发送html测试</h1><img src='cid:test1'></img></body></html>", true);
    mineHelper.setTo(simpleEmailEntity.getTos());
    FileSystemResource file = new FileSystemResource(new File("E:\\DESK\\img.jpg"));
    logger.info("file:{}",file);
    mineHelper.addInline("test1", file);
    } catch (MessagingException e) {
    logger.info("定义MimeMessageHelper失败:{}",e.getMessage());
    }

    logger.info("开始发送信息给:{}",simpleEmailEntity.getTos());
    try {
    mailSender.send(message);
    }catch (Exception e){
    logger.info("发送信息失败,原因:{}",e.getMessage());
    }
    }
  5. 发送带附件的邮件

    @Override
    public void sendem(SimpleEmailEntity simpleEmailEntity) {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper mineHelper = null;
    try {
    mineHelper= new MimeMessageHelper(message, true);
    mineHelper.setFrom(from);
    mineHelper.setSubject(simpleEmailEntity.getSubject());
    mineHelper.setText("甜蜜蜜啊甜蜜蜜,冰雪甜蜜蜜<html><body><h1>发送html测试</h1><img src='cid:test1'></img></body></html>", true);
    mineHelper.setTo(simpleEmailEntity.getTos());
    FileSystemResource file = new FileSystemResource(new File("E:\\DESK\\img.jpg"));
    logger.info("file:{}",file);
    mineHelper.addInline("test1", file);
    mineHelper.addAttachment("会计科目.xls",new File("E:\\DESK\\会计科目.xls"));
    } catch (MessagingException e) {
    logger.info("定义MimeMessageHelper失败:{}",e.getMessage());
    }

    logger.info("开始发送信息给:{}",simpleEmailEntity.getTos());
    try {
    mailSender.send(message);
    }catch (Exception e){
    logger.info("发送信息失败,原因:{}",e.getMessage());
    }
    }

     

可以把发送邮件功能提取一个工具类,要使用的时候调用就行了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐