Springboot realizes the simple content sending of the mailbox (you can maintain the mailbox by yourself and send it to multiple people)

1. pom.xml

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

2. Configure the yml file (this step is only to enable the email package to take effect, and the sent mailbox can be adjusted according to the following implementation method)
1. QQ mailbox configuration (supports SSL secure sending):

#邮箱配置
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 mailbox configuration (support SSL secure sending):

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

How to obtain and view the authorization code and port of qq mailbox and 163 mailbox, please see the reference link at the end of this article

3. Implementation code (Controller layer)

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;
    }

Reference link:
https://blog.csdn.net/qq_42449963/article/details/123285035
https://www.csdn.net/tags/OtDaUg2sMjA3MzYtYmxvZwO0O0OO0O0O.html

Guess you like

Origin blog.csdn.net/Strive279/article/details/125759232