springboot实现邮箱简单内容发送(可以自己进行邮箱维护并发送多个人员)

一、pom.xml

<dependencies>
	<!-- springboot的所需要的包配置 -->
	
	<!-- 关键 springboot集成email发送依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
</dependencies>

二、配置yml文件(这一步仅是为了能使email这个包生效,发送的邮箱可以根据下面的实现方法自行调整)
1、QQ邮箱配置(支持SSL安全发送):

#邮箱配置
spring:
  mail:
    default-encoding: UTF-8
    host: smtp.qq.com
    username: 邮箱
    password: 授权码
    # 端口号465或587,但是经过我的测试,发现只有587能用
    port: 587
    # 使用SSL方式
    properties:
      mail:
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory

2、163邮箱配置(支持SSL安全发送):

spring:
  mail:
    default-encoding: UTF-8
    host: smtp.163.com
    username: 邮箱
    password: 授权码
    # 端口号465或944,但是经过我的测试,发现两个都能用
    port: 944
    # 使用SSL方式
    properties:
      mail:
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory

qq邮箱和163邮箱授权码跟端口如何获取跟查看,请看本文章最后的参考链接

三、实现代码(Controller层)

public JavaMailSenderImpl getJavaMailSender(Map<String,Object> map) {
    
    
        // 邮件发送者
        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost(map.get("EMAILTYPE").toString());
        //5、SMTP服务器: 默认端口 163邮箱与qq邮箱端口不一样
        if (map.get("EMAILTYPE").toString().equals("smtp.163.com")){
    
    
            javaMailSender.setPort(25);
        }else if (map.get("EMAILTYPE").toString().equals("smtp.qq.com")){
    
    
            javaMailSender.setPort(587);
        }

        //6、//发送邮件协议名称
        javaMailSender.setProtocol("smtp");
        //7、编码格式
        javaMailSender.setDefaultEncoding("UTF-8");
        javaMailSender.setUsername(map.get("EMAILURL").toString());
        javaMailSender.setPassword(map.get("EMAILPWD").toString());
        //8、创建连接对象,连接到邮箱服务器
        Properties properties = new Properties();
        //发送服务器需要身份验证,要采用指定用户名密码的方式去认证
        properties.put("mail.smtp.auth", true);
        properties.put("mail.smtp.starttls.enable", true);
        //9、添加连接对象到邮件对象中
        javaMailSender.setJavaMailProperties(properties);
        return javaMailSender;
    }

    //声明一个Message对象(代表一封邮件),从session中创建
    private MimeMessage getMimeMessage(String username, String toEmail, String subject, String text, JavaMailSenderImpl javaMailSender) throws MessagingException {
    
    

        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        //发件人
        mimeMessageHelper.setFrom(username);
        //收件人  : 可以发送给多个收件人,该方法有一个重载的 数组形参
        mimeMessageHelper.setTo(toEmail);
        //邮件主题
        mimeMessageHelper.setSubject(subject);
        //邮件内容
        mimeMessageHelper.setText(text, true);

        return mimeMessage;
    }

    @RequestMapping("/sendMail")
    @ResponseBody
    public Map<String,Object> sendMail(HttpServletRequest request, HttpServletResponse response) throws Exception{
    
    
        Map<String,Object> mapOut = new HashMap<>();
        //获取参数 我这里是封装好的方法,请按自己的方法修改
        Map<String, Object> mapArgu = CFunc.PackArguToMap(request, response);
        //从数据库中取得邮箱  这里不多展示  自己写死邮箱都可以
        Map<String,Object> email = firstTrialService.getEmailDetail();
        if (email==null){
    
    
            mapOut.put("status","error");
            mapOut.put("message","发件邮箱不存在,请进行维护");
            return mapOut;
        }
        String username = email.get("EMAILURL").toString();
        
        
        String toEmail = "发送邮箱的email";
        
        String subject = "标题";
        String text = "内容";
        

        //发送邮件
        JavaMailSenderImpl javaMailSender = getJavaMailSender(email);
        MimeMessage mimeMessage = getMimeMessage(username, toEmail, subject, text, javaMailSender);
        javaMailSender.send(mimeMessage);

        mapOut.put("status","ok");
        return mapOut;
    }

参考链接:
https://blog.csdn.net/qq_42449963/article/details/123285035
https://www.csdn.net/tags/OtDaUg2sMjA3MzYtYmxvZwO0O0OO0O0O.html

猜你喜欢

转载自blog.csdn.net/Strive279/article/details/125759232