maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
yml配置
mail:
host: smtp.163.com # 发件服务器地址,不同邮件平台地址不同
port: 25 #常用邮件端口25、109、110、143、465、995、993、994 如果开启了SSL安全则使用对应的端口号,25为非加密端口号
username: xxx@163.com #发送邮件的账号
password: xxxx#发送邮件账号的授权码,这里的授权码不是验证码.需要到邮箱
default-encoding: utf-8 #设置编码
properties: # 设置邮件超时时间防止服务器阻塞
timeout: 5000
connection-timeout: 5000
write-timeout: 5000
核心代码
package com.example.rabbitmq_demo.email;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
/**
* @program: rabbitMQ_demo
* @description:
* @author: Zeke
* @create: 2023-07-19 10:11
**/
@Service
@Slf4j
public class Mail163impl implements Mail{
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
String sendUserName;
String[] emails = { "你要发送的邮箱1","你要发送的邮箱2" }; //多发
spring email="你要发送的邮箱1"; //单发
public Boolean sendEMail(String Subject) {
try {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(sendUserName); //设置发送邮件账号
simpleMailMessage.setTo(emails); //设置接收邮件的人,可以多个
simpleMailMessage.setSubject("eMailCmd"); //设置发送邮件的主题
simpleMailMessage.setText(Subject); //设置发送邮件的内容
mailSender.send(simpleMailMessage);
return true;
} catch (MailException e) {
log.error("邮件发送失败!");
return false;
}
}
}
测试
@Autowired
Mail mail;
@Test
void contextLoads() {
Boolean aBoolean = mail.sendEMail("521");
System.out.println(aBoolean);
}
找到设置==>客户端设置(不同邮箱名字不同,163邮箱则是POP3/SMTP/IMAP),就会看到以下页面,开启需要使用的服务即可,我们这边使用的是IMPAP/SMTP
新增授权码,点击新增授权码,按照提示扫码发送短信,或者手动发送短信即可。然后就可以看到您新的授权码了。
新增授权码后,记住授权码后面要用。
升级带附件
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
String sendUserName;
String[] emails = { "xxxx@gmail.com" }; // 发送到
String[] cc = { "xxxx@gmail.com","xxxxx@163.com" }; //抄送
private String content ="<img src='https://www.hahagu.com/upload/a/202004/b441cc27bfd828d4490a6722b954615b.jpg'/><a href='https://www.baidu.com/'>点开</a><H1>\"写不肉真的帅\"</H1>";
private String pathname="D:\\czy\\cs\\微信图片_20230628172724.jpg";
private String attachmentFilename="帅哥.jpeg";
@Override
public Boolean sendEMail2() {
try {
MimeMessage message = mailSender.createMimeMessage();
//第2个参数:是否允许添加多部件
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(sendUserName);
helper.setTo(emails);
helper.setSubject("eMailCmd");
helper.setCc(cc);
// helper.setText(content);
//第2个参数:是否解析html
helper.setText(content,true);
//添加附件
File file = new File(pathname);
//helper.addAttachment(file.getName(),file);
helper.addAttachment(attachmentFilename,file);
mailSender.send(message);
return true;
} catch (MessagingException e) {
e.printStackTrace();
}
return false
;
}
}
// String[] to: 这是一个字符串数组,表示邮件的收件人地址。您可以将多个收件人的邮箱地址放在这个数组中,每个邮箱地址之间使用逗号分隔。 // // String from: 这是一个字符串,表示邮件的发件人地址。 // // String subject: 这是一个字符串,表示邮件的主题。 // // String text: 这是一个字符串,表示邮件的正文内容。 // // String[] cc: 这是一个字符串数组,表示邮件的抄送收件人地址。和收件人一样,您可以将多个抄送收件人的邮箱地址放在这个数组中。 // // String[] bcc: 这是一个字符串数组,表示邮件的密送收件人地址。和收件人一样,您可以将多个密送收件人的邮箱地址放在这个数组中。 // // void setTo(String[] to): 这是一个方法,用于设置邮件的收件人地址。 // // void setFrom(String from): 这是一个方法,用于设置邮件的发件人地址。 // // void setSubject(String subject): 这是一个方法,用于设置邮件的主题。 // // void setText(String text): 这是一个方法,用于设置邮件的正文内容。 // // void setCc(String[] cc): 这是一个方法,用于设置邮件的抄送收件人地址。 // // void setBcc(String[] bcc): 这是一个方法,用于设置邮件的密送收件人地址。