Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。
添加依赖
org.springframework.boot
spring-boot-starter-mail
配置application.yml文件
spring:
mail:
host: smtp.qq.com
# 你的邮箱授权码
password:
nickname: # 该参数为自定义参数,作为发件人昵称使用
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
# 发送邮件的邮箱地址
username: ******@qq.com
主流邮箱host
- qq邮箱:smtp.qq.com
- 163邮箱:smtp.163.com
- gmail邮箱:smtp.gmail.com
三种使用方式
发送普通邮件
/**
* 无附件 简单文本内容发送
* @param email 接收方email
* @param subject 邮件内容主题
* @param text 邮件内容
*/
public void simpleMailSend(String email,String subject,String text) {
//创建邮件内容
SimpleMailMessage message=new SimpleMailMessage();
message.setFrom(usernick+"<"+username+">");//这里指的是发送者的账号
message.setTo(email);
message.setSubject(subject);
message.setText(text);
//发送邮件
mailSender.send(message);
System.out.println("\033[32;1m"+"发送给 "+email+" 的邮件发送成功"+"\033[0m");
}
发送带附件的邮件
/**
* 发送带附件的邮件
*
* @param to 接受人
* @param subject 主题
* @param html 发送内容
* @param filePath 附件路径
* @throws MessagingException 异常
* @throws UnsupportedEncodingException 异常
*/
public void sendAttachmentMail(String to, String subject, String html, String filePath) throws MessagingException, UnsupportedEncodingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(usernick+"<"+username+">");
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(html, true);
FileSystemResource file=new FileSystemResource(new File(filePath));
String fileName=filePath.substring(filePath.lastIndexOf(File.separator));
messageHelper.addAttachment(fileName,file);
mailSender.send(mimeMessage);
}
发送Html邮件
/**
* 发送html内容的 邮件
* @param email
* @param subject
* @param text
*/
public void sendSimpleMailHtml(String email,String subject,String text) throws MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setFrom(username);
helper.setTo("[email protected]");
helper.setSubject("主题:嵌入静态资源");
// 注意标签,src='cid:jpg','cid'是contentId的缩写,'jpg'是一个标记
helper.setText("", true);
// 加载文件资源,作为附件
FileSystemResource file = new FileSystemResource(new File("C:\\Users\\吴超\\Pictures\\Camera Roll\\微信截图_20191016142536.png"));
// 调用MimeMessageHelper的addInline方法替代成文件('jpg[标记]', file[文件])
helper.addInline("jpg", file);
// 发送邮件
mailSender.send(mimeMessage);
}