直接上代码
maven 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
service层
@Override
public Boolean sendMail() {
// 参数配置
Properties props = new Properties();
使用的协议(JavaMail规范要求)
props.setProperty("mail.transport.protocol", "smtp");
//EMAIL_SMTP_HOST :发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.host", EMAIL_SMTP_HOST);
需要请求认证
props.setProperty("mail.smtp.auth", "true");
//使用端口 465
props.setProperty("mail.smtp.port", "465");
//处理使用465端口带来的异常报错 解决代码
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//第一个参数 发件人邮箱
//第二个参数 授权码
return new PasswordAuthentication("xxxxxx@xxxxx.com", EMAIL_PD);
}
});
try {
// 3.创建邮件对象
Message message = new MimeMessage(session);
//3.1设置发件人
message.setFrom(new InternetAddress("发件人邮箱地址"));
//设置收件人
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("收件人邮箱地址"));
//3.3设置邮件的主题
message.setSubject("我是主题");
//3.4设置邮件的正文
message.setContent("<h1>我是正文内容 。。。。。。", "text/html;charset=UTF-8");
message.setSentDate(new Date());
// 4.发送邮件
Transport.send(message);
} catch (MessagingException e) {
log.error("-------------------- 发送邮件验证码报错:" + e);
e.printStackTrace();
return false;
}
return true;
}
端口说明:
25端口(SMTP):25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件
(SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助, QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)
465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。
143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。
注:授权码:需要在邮件中操作获取,