版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnwodeboke/article/details/80110612
SpringBoot自带了mail相关的功能
一、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二、首先保证你要使用的邮箱得开通POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
开通后会返回一个授权码code,记住这个code;
三、在application.yml中进行相关配置
spring:
mail:
host: smtp.qq.com #(邮箱服务器)
username: [email protected] #(发送邮件的邮箱服务地址)
password: xxxxxx #(上面获取的授权码code)
port: 465 #(端口)
default-encoding: UTF-8
protocol: smtp
properties:
mail:
smtp:
ssl:
enable: true
四、开始写测试方法
1、发送简单邮件
@Autowired
//JavaMailSender mailSender;
//使用实现类可以自定义发送服务器地址,而不是默认使用文件配置中的发送服务器。
JavaMailSenderImpl javaMailSender;
@RequestMapping("sendemail")
public void sendEmail(String toEamil,String subject, String content) {
//解决附件文件名称过长乱码问题
System.setProperty("mail.mime.splitlongparameters","false");
//发送简单邮件
sendSimpleMail(toEamil,subject,content);
}
public void sendSimpleMail(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("[email protected]"); //发送者,必须和application.yml中的username一致,否则会报错;
message.setTo(to); //接收者
message.setSubject(subject); //邮件主题
message.setText(content); //邮件内容
try {
mailSender.send(message);
logger.info("简单邮件已经发送。");
} catch (Exception e) {
e.printStackTrace();
logger.error("发送简单邮件时发生异常!", e);
}
}
发送成功
2、发送html邮件
public void sendHtmlMail(String to, String subject, String content) {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true); //true表示需要创建一个multipart message
helper.setFrom(fromEamil);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
mailSender.send(message);
logger.info("html邮件发送成功");
} catch (MessagingException e) {
e.printStackTrace();
logger.error("发送html邮件时发生异常!", e);
}
}
3、发送带附件的邮件
/**
* @param to
* @param subject
* @param content
* @param filePath 文件路径:D:\\test\\pic.jpg 注意反斜杠
*/
public void sendAttachmentsMail(String from, String pwd, String to, String subject, String content, String filePath){
if(StringUtils.isNotBlank(from) && StringUtils.isNotBlank(pwd)) {
//from和pwd为参数中自定义的发送者和密码
mailSender.setUsername(from);
mailSender.setPassword(pwd);
}else{
//FROM_USER和PASSWORD为application.yml中配置的发送者和密码。
mailSender.setUsername(FROM_USER);
mailSender.setPassword(PASSWORD;
}
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
if(StringUtils.isNotBlank(from) && StringUtils.isNotBlank(pwd)){
helper.setFrom(from);
}else{
helper.setFrom(FROM_USER);//FROM_USER为application.yml中的username;
}
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);
mailSender.send(message);
logger.info("带附件的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送带附件的邮件时发生异常!", e);
}
}