一
首先开启qq邮箱第三方服务,接着
1.导入依赖
<dependencies>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>qqsendmail</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.14</version>
<relativePath/>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
</project>
2.A
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import java.util.Properties;
public class A {
public static Session createSession() {
// 账号信息
String username = "2315192068@qq.com";// 邮箱发送账号
String password = "ydorhhgtfkmkdidf";// 邮箱授权码
// 创建一个配置文件,并保存
Properties props = new Properties();
// SMTP服务器连接信息
// 126——smtp.126.com
// 163——smtp.163.com
// qq——smtp.qq.com"
props.put("mail.smtp.host", "smtp.qq.com");// SMTP主机名
// 126——25
// 163——465
props.put("mail.smtp.port", "587");// 主机端口号
props.put("mail.smtp.auth", "true");// 是否需要用户认证
props.put("mail.smtp.starttls.enale", "true");// 启用TlS加密
// 创建session会话
// 参数1:smtp服务器连接参数
// 参数2:账号和密码的授权认证对象
Session session = Session.getInstance(props,new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
return session;
}
}
3.B
import javax.mail.*;
import javax.mail.internet.*;
public class B {
public void sendemail() {
try {
// 创建会话
Session session = A.createSession();
// 创建邮件
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("2315192068@qq.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("2186976794@qq.com"));
// 添加抄送人
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("抄送人1@qq.com, 抄送人2@qq.com"));
message.setSubject("主题");
// 邮件主体
BodyPart textPart = new MimeBodyPart();
textPart.setContent("你好", "text/html;charset=utf-8");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
// 将邮件装入信封
message.setContent(multipart);
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.测试类
import org.example.test.B;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
public String getValue(){
new B().sendemail();
return "发送成功";
}
}
二
1.依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.User
public class User {
private String Username;
private int Num;
private double Salary;
public String getUsername() {
return Username;
}
public void setUsername(String username) {
Username = username;
}
public int getNum() {
return Num;
}
public void setNum(int num) {
Num = num;
}
public double getSalary() {
return Salary;
}
public void setSalary(double salary) {
Salary = salary;
}
}
3.在 resources/templates 目录下创建一个 mail.ftl 作为邮件发送模板
mail.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>hello 欢迎加入 xxx 大家庭,您的入职信息如下:</p>
<table border="1">
<tr>
<td>姓名</td>
<td>${username}</td>
</tr>
<tr>
<td>工号</td>
<td>${num}</td>
</tr>
<tr>
<td>薪水</td>
<td>${salary}</td>
</tr>
</table>
<div style="color: #ff1a0e">一起努力创造辉煌</div>
</body>
</html>
4.发送类
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.example.qqSendMailApplication;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Date;
public class C {
public void sendFreemarkerMail() throws MessagingException, IOException, TemplateException {
JavaMailSender javaMailSender = new JavaMailSenderImpl();
((JavaMailSenderImpl) javaMailSender).setHost("smtp.qq.com"); // 设置QQ邮箱SMTP服务器
((JavaMailSenderImpl) javaMailSender).setPort(587); // QQ邮箱SMTP端口
((JavaMailSenderImpl) javaMailSender).setUsername("2315192068@qq.com"); // 您的QQ邮箱账号
((JavaMailSenderImpl) javaMailSender).setPassword("ydorhhgtfkmkdidf"); // 您的QQ邮箱授权码
((JavaMailSenderImpl) javaMailSender).setDefaultEncoding("UTF-8");
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("这是一封测试邮件");
helper.setFrom("2315192068@qq.com");
helper.setTo("2186976794@qq.com");
helper.setCc("37xxxxx37@qq.com");
helper.setBcc("14xxxxx098@qq.com");
helper.setSentDate(new Date());
//构建 Freemarker 的基本配置
Configuration configuration = new Configuration(Configuration.VERSION_2_3_0);
// 配置模板位置
ClassLoader loader = qqSendMailApplication.class.getClassLoader();
configuration.setClassLoaderForTemplateLoading(loader, "templates");
//加载模板
Template template = configuration.getTemplate("mail.ftl");
User user = new User();
user.setUsername("javaboy");
user.setNum(1);
user.setSalary((double) 99999);
StringWriter out = new StringWriter();
//模板渲染,渲染的结果将被保存到 out 中 ,将out 中的 html 字符串发送即可
template.process(user, out);
helper.setText(out.toString(),true);
javaMailSender.send(mimeMessage);
}
public static void main(String[] args) throws MessagingException, TemplateException, IOException {
new C().sendFreemarkerMail();
}
}