spring boot 使用 java mail 发送邮件
1.邮箱授权
QQ邮箱授权,打开 “设置” 切换到 “账户” 找到下图中设置,开启 “POP3/SMTP服务” 和 “IMAP/SMTP服务”,开启后获取的授权码记得保存后续会用到
2.导入maven 依赖
<!-- 邮件email -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3.创建发送邮箱工具类
@Component
public class SendMailUtil {
// 1.设置发送邮件的一些参数
private static Properties pro = new Properties();
public SendMailUtil() {
}
//设置邮箱连接属性,发送邮件端口号为 587
static {
pro.setProperty("mail.transport.protocol", "smtp");
pro.setProperty("mail.smtp.host", "smtp.qq.com");
pro.setProperty("mail.smtp.auth", "true");
pro.setProperty("mail.smtp.port", "587");
}
/**
* @Description: 邮件发送
* @Param: recipients 收件人邮箱
* @Param: content 发送内容
* @Param: headline 标题
* @return: boolean 未成功/成功
*/
public static boolean sendSimpleMail(String recipients, String content, String headline) {
boolean res = false;
Transport transport = null;
try {
// 2.创建一个会话对象和邮件服务器交互
Session session = Session.getDefaultInstance(pro);
// 3.创建一个邮件对象
MimeMessage message = new MimeMessage(session);
// 设置发送人邮箱
message.setFrom(new InternetAddress("发送人邮箱"));
// 收件人
message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(recipients));
// 设置邮件的标题
message.setSubject(headline);
//正文 邮件内容、设置邮件的正文
message.setContent(content, "text/html;charset=UTF-8");
// 发送时间
message.setSentDate(new Date());
// 保存设置
message.saveChanges();
// 获取一个传输对象
Transport transport = session.getTransport();
// 设置发送邮件用户名和邮箱授权后获取的授权码
transport.connect("发送人邮箱", "即获取的授权码");
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
res = true;
} catch (Exception e) {
e.printStackTrace();
}finally {
//关闭传输连接
if(transport != null){
transport.close();
}
}
return res;
}
}
4. 创建发送邮件controller
@RestController
@RequestMapping("/email")
public class LoginController {
/**
* @param recipients(收件人邮箱)
* @return
*/
@PostMapping("/sendMessage")
public String test(String recipients) {
try {
/** recipients 收件人邮箱 */
if (SendMailUtil.sendSimpleMail(recipients, "邮件内容", "标题:验证码")) {
return "成功";
} else {
return "失敗";
}
} catch (Exception e) {
e.printStackTrace();
return "失敗";
}
}
}