基于Java实现QQ邮箱发送工具类

 更新时间:2023年12月17日 10:52:43   作者:大白猫~  
我们在日常开发中,需要实现一个对邮箱的发送,今天就实现邮箱的发送工具类,只需要一些注册邮箱之后的配置即可,感兴趣的小伙伴可以了解下

我们在日常开发中,需要实现一个对邮箱的发送,今天就实现邮箱的发送工具类,只需要一些注册邮箱之后的配置即可,我这边使用的是qq邮箱

0.加上依赖

<!--邮箱-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

1.配置yml文件

需要到官网上去注册,链接地址:https://mail.qq.com/

spring:                         # Spring Boot应用程序配置的根节点
   mail:                        # 邮件相关配置
    username:                   # 你自己的QQ邮箱的用户名,需要填写你的QQ邮箱地址
    password:                   # 你自己的QQ邮箱的密钥/密码,需要填写你的QQ邮箱登录密码
    host: smtp.qq.com            # SMTP服务器主机名,这里设置为QQ邮箱的SMTP服务器
    port: 465                   # SMTP服务器端口,通常情况下使用SSL的SMTP协议使用465端口
    protocol: smtp              # 使用SMTP协议发送邮件
 
    properties:                 # 邮件相关的属性配置
      mail:                     # 邮件协议属性配置
        smtp:                   # SMTP协议属性配置
          ssl:                  # SSL/TLS属性配置
            enable: true         # 启用SSL,表示使用加密传输邮件
          auth: true             # 启用SMTP身份验证,需要提供用户名和密码
          starttls:             # STARTTLS属性配置,用于在未加密连接上启用TLS
            enable: true        # 启用STARTTLS
            required: true      # 要求必须使用STARTTLS
          socketFactory:        # Socket工厂属性配置,用于SSL连接
            port: 465           # SSL连接的端口,与SMTP服务器的端口一致
            class: javax.net.ssl.SSLSocketFactory  # 使用的Socket工厂类,通常用于SSL连接
 
# 请确保填写你自己的QQ邮箱地址和密码,以及确保QQ邮箱允许使用SMTP服务来发送邮件

2.写一个发送邮箱工具类

@Component
public class MailUtil {
 
    private static MailUtil INSTANCE = new MailUtil();
 
    @Resource
    JavaMailSender mailSender;
 
    @Resource
    JavaMailSender javaMailSender;
 
    @PostConstruct
    public void init(){
        INSTANCE.mailSender = mailSender;
    }
 
    /**
     * 发送简单邮件
     *
     * @param subject 主题
     * @param content 内容
     * @param from 发件人
     * @param to      收件人
     */
    public void sendSimpleMail(String subject,String content,String from,String[] to){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        // 主题
        message.setSubject(subject);
        // 邮件正文
        message.setText(content);
        message.setSentDate(new Date());
        // 发送邮件
        INSTANCE.mailSender.send(message);
    }
    public void sendMimeMail(String subject,String content,String from,String[] to) throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // 构建一个邮件对象
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        // 设置邮件主题
        helper.setSubject(subject);
        // 设置邮件发送者,这个跟application.yml中设置的要一致
        helper.setFrom(from);
        helper.setTo(to);
        // 设置邮件发送日期
        helper.setSentDate(new Date());
        // 设置邮件的正文 true:是html文件
        helper.setText(content,true);
        // 发送邮件
        javaMailSender.send(mimeMessage);
    }
 
}

3.编写controller控制器接口

@RestController
@Api(tags = "邮箱发送")
@RequestMapping("/mail")
public class MailServlet {
    @Resource
    private MailUtil mailUtil;
 
    @PostMapping("/to")
    @ApiOperation("发送邮件")
    @ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容")
            , @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})
    public R to(String subject, String content, String from, String to) {
        String[] split = to.split(",");
        try {
            mailUtil.sendSimpleMail(subject, content, from, split);
            return R.ok("发送成功");
        } catch (Exception e) {
            e.fillInStackTrace();
            return R.fail("发送失败");
        }
    }
 
    @PostMapping("/tof")
    @ApiOperation("发送富文本邮件")
    @ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容<html>格式")
            , @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})
    public R tof(String subject, String content, String from, String to) {
        String[] split = to.split(",");
        try {
            mailUtil.sendMimeMail(subject, content, from, split);
            return R.ok("发送成功");
        } catch (Exception e) {
            e.fillInStackTrace();
            return R.fail("发送失败");
        }
    }
}

以上就是基于Java实现QQ邮箱发送工具类的详细内容,更多关于Java邮箱发送的资料请关注脚本之家其它相关文章!

相关文章

  • 初步理解Java的泛型特性

    初步理解Java的泛型特性

    这篇文章主要介绍了Java的泛型特性,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Java8如何从一个list中获取某一元素集合

    Java8如何从一个list中获取某一元素集合

    这篇文章主要介绍了Java8如何从一个list中获取某一元素集合,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java定时调用.ktr文件的示例代码(解决方案)

    Java定时调用.ktr文件的示例代码(解决方案)

    这篇文章主要介绍了Java定时调用.ktr文件的示例代码,本文给大家分享遇到问题及解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Spring MVC入门_动力节点Java学院整理

    Spring MVC入门_动力节点Java学院整理

    这篇文章主要介绍了Spring MVC入门,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • gateway、webflux、reactor-netty请求日志输出方式

    gateway、webflux、reactor-netty请求日志输出方式

    这篇文章主要介绍了gateway、webflux、reactor-netty请求日志输出方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Json字符串转Java对象和List代码实例

    Json字符串转Java对象和List代码实例

    这篇文章主要介绍了Json字符串转Java对象和List代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 简单总结Java IO中stream流的使用方法

    简单总结Java IO中stream流的使用方法

    这篇文章主要介绍了Java IO中stream流的使用方法的简单总结,包括数据流和打印流等Java入门学习中的基础知识,需要的朋友可以参考下
    2016-03-03
  • mybatis-plus 分页类型转换工具类

    mybatis-plus 分页类型转换工具类

    用mybatis-plus 的分页对象的时候,因为用mybatis-puls 查询出来的分页对象的records里的泛型是实体,有时候需要将实体转换为前端展示的对象,所有写了一个分页数据的类型转换工具,解决这个问题,对mybatis-plus 分页工具类相关知识感兴趣的朋友一起看看吧
    2022-03-03
  • SpringBoot中对应2.0.x版本的Redis配置详解

    SpringBoot中对应2.0.x版本的Redis配置详解

    这篇文章主要为大家介绍了SpringBoot中对应2.0.x版本的Redis配置详解,文中的实现步骤讲解详细,感兴趣的小伙伴们可以了解一下
    2022-06-06
  • java批量导入导出文件的实例分享(兼容xls,xlsx)

    java批量导入导出文件的实例分享(兼容xls,xlsx)

    这篇文章主要给大家介绍了利用java批量导入导出文件的相关资料,文中给出了详细的实例代码,并且兼容xls,xlsx,对大家具有一定的参考学习价值,下面跟着小编一起来看看详细的介绍吧。
    2017-06-06

最新评论