当前位置: 首页 > article >正文

java 实现发送邮箱,复制即用,包含邮箱设置第三方登录授权码获取方法

 application.yml

spring:
  profiles:
    active: dev
#    active: test
    #邮件附件上传文件大小限制
  servlet:
    multipart:
      max-file-size: 50MB  #单个文件大小限制
      max-request-size: 100MB #总文件大小限制(允许存储文件的文件夹大小)
  mail:
    default-encoding: UTF-8
    host: smtp.qq.com
    username: xxxxxxx@qq.com
    password: xxxxxxxxx#邮箱设置第三方登录授权码
    test-connection: false
    properties:
      mail.smtp.auth: true

 邮箱设置第三方登录授权码获取

 邮箱设置第三方登录授权码获取icon-default.png?t=N7T8https://blog.csdn.net/xnian_/article/details/134515274?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134515274%22%2C%22source%22%3A%22xnian_%22%7D

package com.cloud.xxx.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.security.Security;
import java.util.Date;
import java.util.Properties;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

@Slf4j
@Service
public class MailServiceUtil {

    @Resource
    private JavaMailSender javaMailSender;

    /**
     * 发件人的邮箱地址<br>
     * 即我们配置的邮件服务的邮箱
     */
    @Value("${spring.mail.username}")
    private String serverMail;

    @Value("${spring.mail.password}")
    private String password;

    @Value("${spring.mail.host}")
    private String host;



    /**
     * 发送邮件
     *
     * @param toUser  收件人邮件地址
     * @param subject 标题
     * @param text    正文
     */
    public boolean sendMail(String toUser, String subject, String text) {
        try {
            MimeMessage message = javaMailSender.createMimeMessage();

            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(serverMail);
            helper.setTo(toUser.split(","));
            helper.setSubject(subject);
            helper.setText(text, true);

            javaMailSender.send(message);

            log.info("发送邮件to:{},主题:{},内容:{}", toUser, subject, text);
        } catch (Exception e) {
            log.error("sendMail ", e);

            return Boolean.FALSE;
        }

        return Boolean.TRUE;

    }
    /**
     * 使用加密的方式,利用 587 端口进行传输邮件,开启ssl
     * @param to    收件人邮箱
     * @param message    邮件正文
     * @param title 邮件标题
     */
    public  boolean sendMail587(String to, String title, String message) {
        try {
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
            final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
            //设置邮件会话参数
            Properties props = new Properties();
            //邮箱的发送服务器地址
            props.setProperty("mail.smtp.host", host);
            props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
            props.setProperty("mail.smtp.socketFactory.fallback", "false");
            //邮箱发送服务器端口,这里设置为 587 端口
            props.setProperty("mail.smtp.port", "587");
            props.setProperty("mail.smtp.socketFactory.port", "587");
            props.put("mail.smtp.auth", "true");
            //获取到邮箱会话,利用匿名内部类的方式,将发送者邮箱用户名和密码授权给jvm
            Session session = Session.getDefaultInstance(props, new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(serverMail, password);
                }
            });
            //通过会话,得到一个邮件,用于发送
            Message msg = new MimeMessage(session);
            //设置发件人
            msg.setFrom(new InternetAddress(serverMail));
            //设置收件人,to为收件人,cc为抄送,bcc为密送
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
//            msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, false));
//            msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to, false));

            // 设置邮件标题
            msg.setSubject(title);
            //设置发送的日期
            msg.setSentDate(new Date());
            /*//设置邮件消息
            msg.setText(message);*/
            // 设置邮件的内容体
            msg.setContent(message, "text/html;charset=UTF-8");
            //调用Transport的send方法去发送邮件
            Transport.send(msg);

        } catch (Exception e) {
            log.error("sendMail ", e);
            return Boolean.FALSE;
        }
        return Boolean.TRUE;

    }
}


http://www.kler.cn/news/135136.html

相关文章:

  • 如果K8s出现问题,你可以从这9个方面排查
  • 深入理解 synchronized 原理
  • Pytorch plt.scatter()函数用法
  • 【机器学习算法】机器学习:支持向量机(SVM)
  • 解决ubuntu23.10 wifi不能使用的问题
  • python functools.wraps保留被装饰函数属性
  • 王颖奇:ONES.ai 上线,以及我的一些思考
  • josef约瑟 闭锁继电器 LB-7DG 100V 50HZ 导轨安装
  • Git常用指令-1
  • Spring Boot 项目的常用注解与依赖
  • Nginx快速入门教程,域名转发、负载均衡
  • 米贸搜| 关于Facebook企业户的那些事
  • 【C/C++】递归算法
  • el-table固定表头(设置height)出现内容过多时不能滚动问题
  • C# 依赖注入IServiceCollection
  • 制作Go程序的Docker容器(以及容器和主机的网络问题)
  • 使用持久卷部署 WordPress 和 MySQL
  • linux如何重置root密码
  • go语言学习-数据结构
  • 【计算机网络笔记】IPv6简介
  • linux高级篇基础理论五(用户安全,口令设置,JR暴力破解用户密码,NMAP端口扫描)
  • 精密云工程:智能激活业务速率 ——华为云11.11联合大促倒计时 仅剩3日
  • 未来之路:互联网技术驱动汽车行业的创新浪潮
  • Java集合大总结——List的简单使用
  • 大模型的语言能力
  • Kotlin原理+协程基本使用
  • 从能用到好用,国产CPU不是你想象中的样子了?
  • C语言入门笔记—static、extern、define、指针、结构体
  • Flink Operator 使用指南 之 Flink Operatoran安装
  • 思维导图软件 Xmind mac中文版特点介绍