以QQ邮箱为例
一,获取授权码
1、点击设置–账户–POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
2、先开启,后生成授权码,获取所生成的授权密码
二、代码功能
1、pom.xm依赖
<!--邮箱-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、application.properties
spring.mail.host=smtp.qq.com
#发送者邮箱
spring.mail.username=XXXX@qq.com
#授权码
spring.mail.password=XXXXX
spring.mail.properties.mail.smtp.ssl.enable=true
3、MailService.java
package com.pbm.utils;
import java.io.File;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
@Service
public class MailService {
@Resource
JavaMailSender javaMailSender;
/**
* 最简单的邮件发送
* @param from 发送者
* @param to 接收者
* @param subject 标题
* @param content 内容
*/
public void sendSimpleMail(String from,String to,String subject,String
content){ SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(from); simpleMailMessage.setTo(to);
simpleMailMessage.setSubject(subject); simpleMailMessage.setText(content);
javaMailSender.send(simpleMailMessage); }
/**
* 带附件的邮件
* @param from
* @param to
* @param subject
* @param content
* @param file
*/
public void sendAttachFileMail(String from, String to, String subject, String content, File file) {
try{
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(content);
mimeMessageHelper.addAttachment(file.getName(),file);
javaMailSender.send(mimeMessage);
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 带图片的邮件
* @param from
* @param to
* @param subject
* @param content
* @param srePAth
* @param resIds
*/
public void sendMailWithImg(String from,String to,String subject,String content,String [] srePAth,String[]resIds){
if (srePAth.length!=resIds.length){
System.out.println("发送失败");
return;
}
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(content,true);
for (int i = 0; i < srePAth.length; i++) {
FileSystemResource res = new FileSystemResource(new File(srePAth[i]));
mimeMessageHelper.addInline(resIds[i],res);
}
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
4、测试类
package com.pbm;
import java.io.File;
import javax.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.pbm.utils.MailService;
@RunWith(SpringRunner.class)
@SpringBootTest
class Mail1ApplicationTests {
//注入MailService接口
@Resource
MailService mailService;
/**
* 最简单的邮件发送
*/
@Test void contextLoads() {
mailService.sendSimpleMail("XXXX@qq.com","XXXX@qq.com","标题","Hello World"); }
/**
* 带附件的邮件
*/
@Test
void contextLoads2() {
mailService.sendAttachFileMail("XXXX@qq.com","XXXX@qq.com","标题","内容",new File("E:\\Desktop\\erlang_rabbitmq\\rabbitmq-server-3.6.5.exe"));
}
/**
* 带图片的邮件
*/
@Test
public void sendMailWithImg(){
mailService.sendMailWithImg("XXXX@qq.com","XXXX@qq.com","标题","图片1:<div><img src='cid:p01'/></div>图片2:<div><img src='cid:p02'/></div>",new String[]{"E:\\\\STS\\\\img\\\\123.png","E:\\\\STS\\\\img\\\\6.webp.jpg"},new String[]{"po1","po2"});
}
}