SpringBoot邮箱服务
对于邮箱通知,可以使用 JavaMail 相关 api 来写发送邮件的相关代码,后来 Spring 推出了 JavaMailSender 更加简化了邮件发送的过程,在之后 Spring Boot 对此进行了封装就有了现在的 spring-boot-starter-mail
邮箱服务
- SMTP:全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。
- IMAP:全称为Internet Message Access Protocol(互联网邮件访问协议),IMAP允许从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP类似,都是一种邮件获取协议。
- POP3:全称为Post Office Protocol 3(邮局协议),POP3支持客户端远程管理服务器端的邮件。POP3常用于“离线”邮件处理,即允许客户端下载服务器邮件,然后服务器上的邮件将会被删除。目前很多POP3的邮件服务器只提供下载邮件功能,服务器本身并不删除邮件,这种属于改进版的POP3协议。
使用之前在响应邮箱中开启响应服务即可
常用邮箱服务地址
QQ邮箱(mail.qq.com):
POP3服务器地址:pop.qq.com(端口:110)
SMTP服务器地址:smtp.qq.com(端口:25)
SMTP服务器需要身份验证。
网易邮箱(163.com):
POP3服务器地址:pop.163.com(端口:110)
SMTP服务器地址:smtp.163.com(端口:25)
谷歌邮箱(google.com):
POP3服务器地址:pop.gmail.com(SSL启用端口:995)
SMTP服务器地址:smtp.gmail.com(SSL启用端口:587)
阿里云邮箱(mail.aliyun.com):
POP3服务器地址:pop3.aliyun.com(SSL加密端口:995;非加密端口:110)
SMTP服务器地址:smtp.aliyun.com(SSL加密端口:465;非加密端口:25)
IMAP服务器地址:imap.aliyun.com(SSL加密端口:993;非加密端口:143)
新浪邮箱(sina.com):
POP3服务器地址:pop3.sina.com.cn(端口:110)
SMTP服务器地址:smtp.sina.com.cn(端口:25)
以163邮箱为例
开通POP3服务
准备一个163账号,登录PC端,找到并开启POP3/SMTP/IMAP。如下图所示:
开启之后会得到一个授权码,先保存下这个授权码。
引入SpringBoot封装依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
spring:
mail:
host: smtp.163.com
username: sovzn_7@163.com #登录用户名
password: 刚刚自己设置的授权码
default-encoding: utf-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
邮件信息VO
@Data
public class MailDTO implements Serializable {
/**
* 接受邮箱账户
*/
private String mail;
/**
* 邮箱标题
*/
private String title;
/**
* 要发送的内容
*/
private String content;
}
Service
public interface MailService {
public void send(MailDTO mailDTO);
}
/**
* @author Shiyaochang
* 邮箱发送实现类
*/
@Service
@Component
public class MailServiceImpl implements MailService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private MailSender mailSender;
@Override
public void send(MailDTO mailDTO) {
// new 一个简单邮件消息对象
SimpleMailMessage message = new SimpleMailMessage();
// 和配置文件中的的username相同,相当于发送方
message.setFrom("sovzn_7@163.com");
// 收件人邮箱
message.setTo(mailDTO.getMail());
// 标题
message.setSubject(mailDTO.getTitle());
// 正文
message.setText(mailDTO.getContent());
try {
mailSender.send(message);
logger.info("邮件已经发送。");
} catch (Exception e) {
logger.error("发送简单邮件时发生异常!", e);
}
}
}
测试:
@SpringBootTest
class MailApplicationTests {
@Autowired
private MailService mailService;
@Test
void contextLoads() {
MailDTO mailDTO = new MailDTO();
mailDTO.setContent("发送邮箱测试============");
mailDTO.setMail("sovzn@qq.com");
mailDTO.setTitle("测试");
mailService.send(mailDTO);
}
}
成功接收邮件:
给个饭钱?
- Post link: http://sovzn.github.io/2021/10/26/SpringBoot%E6%95%B4%E5%90%88%E9%82%AE%E7%AE%B1%E9%80%9A%E7%9F%A5/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues