一、前期准备
1、开启POP3/IMAP/SMTP等服务,获取授权码。
2、引入pom文件坐标,设置配置文件参数。
spring:
mail:
host: smtp.qq.com
username: 邮箱
password: 邮箱授权码
default-encoding: UTF-8
protocol: smtp
properties:
mail:
smtp:
starttls:
enable: true
required: true
ssl:
enable: true
port: 465
二、代码实现
该业务场景是前端发送一段已经整理好的静态html代码,后端接收该代码并将其作为邮件内容发送给收件人。
1、编写contorller类:
(1)post类型
(2)requestbody接收参数EmailMessage
(3)邮件发送者为公共邮箱,且不允许改变。
@Value("${spring.mail.username}")
private String mailfrom;
@PostMapping("/sendEmail")
public RetVo sendEmail(@RequestBody EmailMessage message){
weekReportService.sendEmail(mailfrom,message);
}
2、编写所需实体参数
@Data
public class EmailMessage {
//抄送人
private String[] cc;
//收件人
private String[] mailTo;
private String nickName;
private String subject;
private String content;
}
3、注入javamail并编写service接口及impl类
(1)通过javaMailSender创建MimeMessage对象,将其作为参数创建MimeMessageHelper对象,可以往该对象设置主题、收件人、抄送人、标题等等信息。
(2)MimeMessage对象作为参数,使用javaMailSender的send方法进行发送。
(3)注意:以下两个地方需要置为true。MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage,true,“UTF-8”);
mimeMessageHelper.setText(message.getContent(),true);
//注入
@Autowired
private JavaMailSender javaMailSender;
//方法声明
void sendEmail(String mailfrom,EmailMessage messageBo);
//具体实现
public void sendEmail(String mailfrom,EmailMessage message) {
MimeMessage mimeMessage=javaMailSender.createMimeMessage();
try{
MimeMessageHelper mimeMessageHelper=new MimeMessageHelper(mimeMessage,true,"UTF-8");
mimeMessageHelper.setFrom(new InternetAddress(mailfrom,"标题","UTF-8"));
//设置多个收件人
mimeMessageHelper.setTo(message.getMailTo());
//设置抄送人
if(message.getCc().length>0){
mimeMessageHelper.setCc(message.getCc());
}
//设置邮件主题
mimeMessageHelper.setSubject(message.getSubject()+"-------"+messageBo.getNickName());
//设置邮件内容
mimeMessageHelper.setText(message.getContent(),true);
javaMailSender.send(mimeMessage);
}catch (MessagingException | UnsupportedEncodingException e){
e.printStackTrace();
}
}
补充:
如果使用的是公司内部邮箱,则在配置文件上添加ssl的trust配置。注意,此时的password非授权码,而是邮箱的密码。
mail:
host: host地址
username: 内部邮箱
password: 内部邮箱密码(可以非授权码)
default-encoding: UTF-8
protocol: smtp
properties:
mail:
smtp:
starttls:
enable: true
required: true
ssl:
trust: host地址
enable: true
port: 465