Spring Boot发送邮件
如何使用Spring Boot发送邮件?
Spring Boot为发送邮件提供了starter:spring-boot-starter-mail
。
接下来,我们看看如何用Spring Boot发送邮件。
一、配置邮箱
这里我们使用163网易邮箱
1.开启SMTP服务
2.设置/重置客户端授权密码
二、编码实现
1.添加依赖
1 <!--mail--> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-mail</artifactId> 5 </dependency>
2.编写配置
1 # mail 2 spring.mail.host=smtp.163.com 3 spring.mail.username=xxxxxx@163.com 4 spring.mail.password=xxxxxx 5 spring.mail.from=xxxxxx@163.com 6 spring.mail.properties.mail.smtp.auth=true 7 spring.mail.properties.mail.smtp.starttls.enable=true 8 spring.mail.properties.mail.smtp.starttls.required=true
3.编写邮件发送实体类
1 package com.alanlee.dto; 2 3 import lombok.AllArgsConstructor; 4 import lombok.Getter; 5 import lombok.NoArgsConstructor; 6 import lombok.Setter; 7 8 import javax.validation.constraints.NotBlank; 9 import javax.validation.constraints.Pattern; 10 11 @Getter 12 @Setter 13 @NoArgsConstructor 14 @AllArgsConstructor 15 public class Mail { 16 17 @Pattern(regexp = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$", message = "邮箱格式不正确") 18 private String to; 19 20 @NotBlank(message = "标题不能为空") 21 private String title; 22 23 @NotBlank(message = "正文不能为空") 24 private String content; 25 26 private String msgId;// 消息id 27 28 }
4.编写邮件发送工具类
1 package com.alanlee.util; 2 3 import com.alanlee.dto.Mail; 4 import lombok.extern.slf4j.Slf4j; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Value; 7 import org.springframework.core.io.FileSystemResource; 8 import org.springframework.mail.MailException; 9 import org.springframework.mail.SimpleMailMessage; 10 import org.springframework.mail.javamail.JavaMailSender; 11 import org.springframework.mail.javamail.MimeMessageHelper; 12 import org.springframework.stereotype.Component; 13 14 import javax.mail.internet.MimeMessage; 15 import java.io.File; 16 17 /** 18 * 邮件发送工具类 19 * 20 * @author AlanLee 21 */ 22 @Component 23 @Slf4j 24 public class MailUtil { 25 26 /** 27 * 发件人 28 */ 29 @Value("${spring.mail.from}") 30 private String from; 31 32 @Autowired 33 private JavaMailSender mailSender; 34 35 /** 36 * 发送简单邮件 37 * 38 * @param mail 39 */ 40 public boolean send(Mail mail) { 41 String to = mail.getTo();// 目标邮箱 42 String title = mail.getTitle();// 邮件标题 43 String content = mail.getContent();// 邮件正文 44 45 SimpleMailMessage message = new SimpleMailMessage(); 46 message.setFrom(from); 47 message.setTo(to); 48 message.setSubject(title); 49 message.setText(content); 50 51 try { 52 mailSender.send(message); 53 log.info("邮件发送成功"); 54 return true; 55 } catch (MailException e) { 56 log.error("邮件发送失败, to: {}, title: {}", to, title, e); 57 return false; 58 } 59 } 60 61 /** 62 * 发送附件邮件(暂无调用,后续完善业务逻辑) 63 * 64 * @param mail 邮件 65 * @param file 附件 66 */ 67 public boolean sendAttachment(Mail mail, File file) { 68 String to = mail.getTo(); 69 String title = mail.getTitle(); 70 String content = mail.getContent(); 71 72 MimeMessage message = mailSender.createMimeMessage(); 73 try { 74 MimeMessageHelper helper = new MimeMessageHelper(message, true); 75 helper.setFrom(from); 76 helper.setTo(to); 77 helper.setSubject(title); 78 helper.setText(content); 79 FileSystemResource resource = new FileSystemResource(file); 80 String fileName = file.getName(); 81 helper.addAttachment(fileName, resource); 82 mailSender.send(message); 83 log.info("附件邮件发送成功"); 84 return true; 85 } catch (Exception e) { 86 log.error("附件邮件发送失败, to: {}, title: {}", to, title, e); 87 return false; 88 } 89 } 90 91 }
5.最后自己写个main方法之类的,调用测试能否发送成功吧,自己动手才是王道。
结束语:在最平凡的生活里谦卑和努力,总有一天你会站在最亮的地方,活成自己曾经渴望的模样。
佛系博主:AlanLee
博客地址:http://www.cnblogs.com/AlanLee
GitHub地址:https://github.com/AlanLee-Java
本文出自博客园,欢迎大家加入博客园。