SpringBoot中已有发邮件的工具包,只需要引用即可使用
1,pom引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2,在配置文件中配置邮件服务器信息。这里需要一个可用的邮件服务器。
spring.mail.default-encoding=utf-8
spring.mail.host=mail.xxxx.com
spring.mail.username=xxxx@xxxx.com
spring.mail.password=password
3,编写发邮件service,调用JavaMailSender.send()即可,支持简单文本邮件、富文本邮件、html邮件
Service代码如下
1 import org.springframework.beans.factory.annotation.Autowired; 2 import org.springframework.beans.factory.annotation.Value; 3 import org.springframework.core.io.FileSystemResource; 4 import org.springframework.mail.MailException; 5 import org.springframework.mail.SimpleMailMessage; 6 import org.springframework.mail.javamail.JavaMailSender; 7 import org.springframework.mail.javamail.MimeMessageHelper; 8 import org.springframework.stereotype.Service; 9 10 import javax.mail.MessagingException; 11 import javax.mail.internet.MimeMessage; 12 import java.io.File; 13 14 @Service 15 public class EmailService { 16 @Autowired 17 private JavaMailSender mailSender; 18 19 @Value("${spring.mail.username}") 20 private String from; 21 22 /** 23 * 发送简单文本邮件 24 * @param content 邮件正文 25 * @param subject 邮件主题 26 * @param to 邮件接收地址 27 * */ 28 public void sendSimpleMail(String to, String subject, String content) throws MailException { 29 System.out.println("-----from:" + from); 30 System.out.println("-----to:" + to); 31 System.out.println("-----subject:" + subject); 32 System.out.println("-----content:" + content); 33 34 SimpleMailMessage message = new SimpleMailMessage(); 35 message.setFrom(from); 36 message.setTo(to); 37 message.setSubject(subject); 38 message.setText(content); 39 mailSender.send(message); 40 } 41 42 /** 43 * 发送富文本邮件 44 * @param content 邮件正文 45 * @param rscId 设置在header头中的文件ID 46 * @param rscPath 图片路径 47 * @param subject 邮件主题 48 * @param to 邮件接收地址 49 * */ 50 public void sendRichTextMail(String to, String subject, String content, String rscPath, String rscId) throws MessagingException { 51 //MimeMessageHelper支持发送复杂邮件模板,支持文本、附件、HTML、图片等。 52 //如果需要发送多张图片,可以改变传参方式,使用集合添加多个<img src='cid:rscId'>和helper.addInline(rscId, res);即可实现 53 54 MimeMessage message = mailSender.createMimeMessage(); 55 MimeMessageHelper helper = new MimeMessageHelper(message, true); 56 helper.setFrom(from); 57 helper.setTo(to); 58 helper.setSubject(subject); 59 helper.setText(content, true); 60 File file = new File(rscPath); 61 FileSystemResource res = new FileSystemResource(file); 62 helper.addInline(rscId, res); 63 64 mailSender.send(message); 65 66 } 67 68 /** 69 * 发送HTML邮件 70 * @param to 邮件接收地址 71 * @param subject 邮件主题 72 * @param content 邮件正文 73 * */ 74 public void sendHtmlMail(String to, String subject, String content) throws MessagingException { 75 MimeMessage message = mailSender.createMimeMessage(); 76 //true 表⽰示需要创建⼀一个 multipart message 77 MimeMessageHelper helper = new MimeMessageHelper(message, true); 78 helper.setFrom(from); 79 helper.setTo(to); 80 helper.setSubject(subject); 81 helper.setText(content, true); 82 mailSender.send(message); 83 } 84 }