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

springboot(07)邮件发送(qq邮箱)

可以使用Spring Boot提供的spring-boot-starter-mail模块来发送QQ邮件

首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设置>>>点击账户>>>找到POP3|SMTP服务>>>点击开启(开启需要验证,验证成功后会有一串授权码用于发送邮件使用)>>>验证成功
记下QQ邮箱提示的授权码,这个授权码,就是发送邮件时需要的密码。

1、引入依赖

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

2、application.yml配置

在配置文件application.yml文件中写入发送邮件的配置信息

spring:
  #邮箱基本配置
  mail:
    #配置smtp服务主机地址
    # qq邮箱为smtp.qq.com          端口号465或587
    # sina    smtp.sina.cn
    # aliyun  smtp.aliyun.com
    # 163     smtp.163.com       端口号465或994
    host: smtp.qq.com
    #发送者邮箱
    username: 1045906978@qq.com
    #配置密码,注意不是真正的密码,而是刚刚申请到的授权码
    password: fe456156fefefee
    #端口号465或587
    port: 587
    #默认的邮件编码为UTF-8
    default-encoding: UTF-8
    #其他参数
    properties:
     mail:
        #配置SSL 加密工厂
      smtp:
        ssl:
          #本地测试,先放开ssl
          enable: false
          required: false
        #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误
      debug: true

3、编写发送邮件方法

编写邮件业务类MailService,分三种发送邮件类型:纯文本邮件、html邮件和带附件的邮件。

主要通过MailService工具类就可以满足发送java邮件的需要。当我们进行好 yml 配置后,SpringBoot会帮助我们自动配置 JavaMailSender 我们通过这个java类就可以实现操作java来发送邮件。

package com.buba.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import java.util.Date;

@RestController
@RequestMapping("/email")
public class EmailController {

    /**
     * 注入邮件工具类
     */
    @Autowired
    private JavaMailSenderImpl javaMailSender;
    
    @Value("${spring.mail.username}")
    private String sendMailer;
    /**
     * 发送邮件
     * @param title 标题 (字符串)
     * @param text 主题内容(字符串)
     * @param receive 邮件的接受人(字符串)
     */
    @GetMapping("sendEmail")
    public void sendEmail(String title,String text,String receive) {
        try {
            //true 代表支持复杂的类型
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true);
            //邮件发信人
            mimeMessageHelper.setFrom(sendMailer);
            //邮件收信人
            mimeMessageHelper.setTo(receive);
            //邮件主题
            mimeMessageHelper.setSubject(title);
            //邮件内容
            mimeMessageHelper.setText(text);
            //邮件发送时间
            mimeMessageHelper.setSentDate(new Date());
            //发送邮件
            javaMailSender.send(mimeMessageHelper.getMimeMessage());
            System.out.println("发送邮件成功:" +sendMailer+"===>"+receive);

        } catch (MessagingException e) {
            e.printStackTrace();
            System.out.println("发送邮件失败:"+e.getMessage());
        }
    }
}

这是一个使用Spring框架实现的邮件发送的Java类。类中包含了一个发送邮件的方法sendEmail。该方法需要传入邮件的标题、主题内容和接收人。

在类中,首先使用@Autowired注解注入了JavaMailSenderImpl的实例javaMailSender。然后使用@Value注解注入了发送邮件的邮箱地址sendMailer。

sendEmail方法中,使用MimeMessageHelper创建了一个MimeMessageHelper的实例mimeMessageHelper。该实例支持复杂的邮件类型。接着设置了邮件发信人、邮件收信人、邮件主题、邮件内容、邮件发送时间。最后调用javaMailSender的send方法发送邮件。

如果发送邮件成功,将会打印发送邮件成功:[sendMailer]===>[receive],否则将会打印发送邮件失败:[e.getMessage()]


http://www.kler.cn/a/7615.html

相关文章:

  • 后端——接口文档(API)
  • 如何在 Ubuntu 上配置 Kotlin 应用环境 ?
  • nginx反向代理上游服务器主从配置
  • Spring boot + Vue2小项目基本模板
  • CC6学习记录
  • vue 获取摄像头拍照,并旋转、裁剪生成新的图片
  • 大地量子与亚马逊云科技合作,为新能源业务的发展提供更多的最佳实践
  • P1010 [NOIP1998 普及组] 幂次方
  • JAVASE 继承
  • 【python+requests】接口自动化测试
  • try catch的应用
  • python--虚拟环境搭建(使用命令安装)
  • 【ESP-IDF】你好世界
  • “智慧”的大楼,为啥落地这么难?
  • Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
  • 有些人失业是必然的,AIGC使用两周后体验
  • Python 3.7 有什么新变化 - 其他语言更改新模块
  • Python中request与Requests.request与session.reauest,session.reauest实现自动关联
  • 【第一节】- flink源码编译
  • USB土壤参数检测仪丨便捷、全面、耐用
  • fiddler(抓包)的用法和HTTP 协议的基本格式
  • 科特ECTN快捷办理
  • LinkedHashMap源码分析以及LRU的应用
  • 厉害了!Facebook优惠广告让你的广告预算翻倍
  • 华为OD机试-统一限载最小值-2022Q4 A卷-Py/Java/JS
  • 【Linux】信号的捕捉