【工作记录】springboot项目通过qq邮箱发送邮件

邮件是我们项目中经常会用到的功能,比如发送验证码或者发送通知等。springboot也提供了相应的springboot-starter方便开发者使用。

本文就是记录如何使用qq邮箱给指定用户发送邮件,其他邮箱类似。

准备工作

1. qq邮箱配置及授权码获取
  • 登录qq邮箱,网页地址: qq邮箱登录

  • 在页面头部找到设置,进入账号tab

  • 找到POP3/IMAP/SMTP模块,如下所示
    在这里插入图片描述

  • 开启服务并记录授权码

  • 开启时会展示授权码,需要记录

2. springboot项目创建及spring-boot-starter-mail引入

​ 新建springboot项目并加入如下依赖

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

开始CODING

1. 邮箱发送邮件的配置

application-mail.yml

spring:
  mail:
    protocol: smtp
    host: smtp.qq.com
    port: 587
    username: 发件人的邮箱地址
    password: 准备工作中得到的授权码
    default-encoding: UTF-8
    properties:
      mail:
        # 这里debug设置为true的话会打印出详细的发送邮件过程中的日志
        debug: true
        smtp:
          auth: true
          starttls:
            enabled: true
            required: true
            socketFactory:
              class: javax.net.ssl.SSLSocketFactory
              fallback: false
2.发送邮件的方法
package com.zjtx.email.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;

/**
 * 邮件发送工具类
 * 
 * @author wuxiaobing
 * @date 2022年10月21日13:10
 */
@Component
public class EmailUtils {

	// 发送邮件服务
	@Autowired
	private JavaMailSender javaMailSender;
	// 发送者
	@Value("${spring.mail.username}")
	private String from;

	/**
	 * 发送简单文本邮件
	 * @param subject 主题
	 * @param content 内容
	 * @param to      收件人列表
	 * @author BillDowney
	 * @date 2022年10月21日13:35
	 */
	public void sendSimpleMail(String subject, String content, String... to) {
		SimpleMailMessage message = new SimpleMailMessage();
		message.setFrom(from);
		message.setSubject(subject);
		message.setText(content);
		message.setTo(to);
		javaMailSender.send(message);
	}

}

3.结果验证

编写测试接口,新建类EmailTestController

package com.zjtx.email.controller;

import com.zjtx.email.utils.EmailUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @author wuxiaobing
 * @date 2022年10月21日14:12
 * @description:
 */
@RestController
@RequestMapping("email")
public class EmailTestController {

    @Resource
    private EmailUtils emailUtils;

    @GetMapping("/sendMailTest")
    public String sendMailTest() {
        emailUtils.sendSimpleMail("测试邮件发送", "这是一封测试邮件的内容.......", "xxx@126.com");
        return "mail send success";
    }

}

启动项目,通过浏览器访问该接口,可以看到控制台打印日志如下:
控制台邮件发送日志
同时浏览器显示"mail send success",表示邮件发送成功,当然也可以去收件邮箱查看。

关于收发邮件的那些事儿

简单的发送邮件操作中间涉及到如下角色:

  1. 邮件客户端
  2. 邮件发送服务端 发送操作 SMTP协议 SMTP服务器
  3. 邮件接收服务器 接收 POP3协议、POP3服务器、IMAP协议、IMAP服务器

发送邮件端遵循的是SMTP协议的服务器,也叫作SMTP服务器。

接收邮件的可以遵循POP3协议叫做POP3服务器,也可以遵循IMAP协议,叫做IMAP服务器。

我们再来了解下这三种协议以及它们之间的区别和联系吧:

POP(Post Office Protocol, 邮局通讯协定)是互联网上的一种通讯协议。
当我们发送邮件时,对方可能会不在线上,所以邮件服务器必须为对方保存数据,直档收信人收信的时候,必须通过POP通讯协定,才能取得邮件。

SMTP(Simple Mail Transfer Protocol, 简易邮件传输通讯协议) 也是互联网上的一种通讯协议。
它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

其实简单的说,POP服务器是用来收信的,而且每个E_mail地址一般只有一个。如果你要同时收取多个邮箱的信件,就必须挨个设置每个邮箱的POP服务器地址,这个地址在邮箱网站上可以找到。至于SMTP服务器,可以理解为就是用来寄信的,而且大多数SMTP服务器也是免费的,也就是说,如果你只是发送邮件就只需要配置好一个SMTP服务器就可以了。

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。本协议主要用于支持使用客户端远程管理服务器上的电子邮件。,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

与POP3拥有同样功能的是IMAP协议,IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,是一个应用层协议(端口是143)。用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

简单来说, SMTP服务器是发信的,POP3和IMAP服务器是接收邮件的,同时POP3 更易丢失邮件或多次下载相同的邮件,但 IMAP 通过邮件客户端与webmail 之间的双向同步功能很好地避免了这些问题, 整体上为用户带来更为便捷和可靠的体验

以上就是本文的所有内容,希望帮助到需要的同学,有任何疑问可以留言交流。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泽济天下

你的鼓励是我最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值