-->

SpringBoot集成邮箱服务

SpringBoot集成邮箱服务

  1. 引入依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>
    
  2. 开启邮箱的SMTP服务,获取授权码,一般是在邮箱的设置->账户里开启

image

  1. 配置 application.yaml 文件

    spring:
    	# 邮件配置
      mail:
        # smtp服务主机
        host: smtp.163.com / smtp.qq.com
        # 服务协议
        protocol: smtp
        # 编码集
        default-encoding: UTF-8
        # 允许测试连接
        test-connection: true
        # 发件人
        username: 发送方邮箱
        # 授权码
        password: 第二步获取的授权码
    
  2. 编写需要的邮件对象

    package com.jojo.vo;
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    import java.io.Serializable;
    
    /**
     * 邮件对象
     */
    @Data
    @ApiModel(value = "邮件内容")
    public class MailVo implements Serializable {
    
        @ApiModelProperty(value = "是否是html格式")
        private boolean isHtml;
    
        @ApiModelProperty(value = "接收者(可以多个)")
        private String[] receivers;
    
        @ApiModelProperty(value = "邮件主题")
        private String title;
    
        @ApiModelProperty(value = "邮件内容")
        private String content;
    }
    
  3. 将JavaMailSender类注入Spring容器中

    @Value("${spring.mail.username}")
    private String mailSender;
    
    @Value("${spring.mail.password}")
    private String mailPwd;
    
    @Bean
    public JavaMailSenderImpl JavaMailSender(){
        JavaMailSenderImpl Sender = new JavaMailSenderImpl();
        Sender.setHost("smtp.qq.com");
        Sender.setUsername(mailSender);
        Sender.setPassword(mailPwd);
        return Sender;
    }
    
  4. 编写邮件工具类

    package com.jojo.utils;
    
    import com.jojo.vo.MailVo;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Component;
    
    import javax.mail.internet.MimeMessage;
    import java.util.Arrays;
    
    /**
     * 发送邮件
     */
    @Component
    @Slf4j
    public class MailUtil {
    
        @Autowired
        private JavaMailSender mailSender;
    
        @Value("${spring.mail.username}")
        private String sender;
    
        /**
         * 发送邮件
         * @param mail 邮件内容
         * @return
         */
        public String sendMail(MailVo mail){
            try{
                if (mail.isHtml()){
                    MimeMessage mailMessage = mailSender.createMimeMessage();
                    // 可以发送文件
                    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true);
                    messageHelper.setFrom(sender);
                    messageHelper.setTo(mail.getReceivers());
                    messageHelper.setSubject(mail.getTitle());
                    messageHelper.setText(mail.getContent(),true);
                    mailSender.send(mailMessage);
                    log.info("HTMl格式邮件发送成功!==> 收件人:{}", Arrays.asList(mail.getReceivers()));
                } else {
                    // 创建邮件对象
                    SimpleMailMessage mailMessage = new SimpleMailMessage();
                    // 发件人
                    mailMessage.setFrom(sender);
                    // 收件人
                    mailMessage.setTo(mail.getReceivers());
                    // 邮件主题
                    mailMessage.setSubject(mail.getTitle());
                    // 邮件内容
                    mailMessage.setText(mail.getContent());
                    mailSender.send(mailMessage);
                    log.info("普通邮件发送成功!==> 收件人:{}", Arrays.asList(mail.getReceivers()));
                }
                return "邮件发送成功!";
            } catch (Exception e){
                log.error("邮件发送失败!==> {}",e.getMessage());
                return "邮件发送失败!";
            }
        }
    }
    
    
  5. 普通邮件测试

    @Test
    void TestMail(){
      MailVo mailVo = new MailVo();
      mailVo.setReceivers(new String[]{"3058816256@qq.com"});
      mailVo.setTitle("邮箱测试");
      mailVo.setContent("这是一条测试邮箱");
      System.out.println(mailUtil.sendMail(mailVo));
    }
    

image

  1. html邮件测试

    @Test
    void TestMail(){
      MailVo mailVo = new MailVo();
      mailVo.setReceivers(new String[]{"3058816256@qq.com"});
      mailVo.setHtml(true);
      mailVo.setTitle("邮箱测试");
      mailVo.setContent("<a href='https://www.baidu.com' style='color:red' >hello,world</a>");
      System.out.println(mailUtil.sendMail(mailVo));
    }
    

image

posted @   满城悬新筝  阅读(294)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示