SpringBoot正文为HTML格式带图片邮件发送
继续邮件篇:http://www.zeromemos.com/index/article/read.html?id=322
添加MailService接口方法sendMailWithImg
package com.zeromemos.service;
import java.io.File;
public interface MailService {
void sendSimpleMail(String to, String subject, String content);
void sendAttachFileMail(String to, String subject, String content, File file);
void sendMailWithImg(String to, String subject, String content, String[] srcPath, String[] resIds);
}
MailServiceImpl里实现方法
/**
* 发送带图片资源的邮件
* @param to 收件人
* @param subject 主题
* @param content 内容
* @param srcPath 图片资源路径
* @param resIds 资源id
*/
@Override
public void sendMailWithImg(String to, String subject, String content, String[] srcPath, String[] resIds) {
//如果路径数量和资源ID数量不一致
if (srcPath.length != resIds.length) {
System.out.println("发送失败");
return;
}
try {
MimeMessage message = javaMailSender.createMimeMessage();
/*
* 这里使用MimeMessageHelper简化了邮件配置,
* 它的构造方法的第二个参数true表示构造一个multipart message类型的邮件,
* multipart message类型的邮件包含多个正文、附件以及内嵌资源,邮件的表现形式更加丰富
*/
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);//发送者
helper.setTo(to);//收件者
helper.setSubject(subject);//主题
helper.setText(content, true);//第二个参数true表示邮件正文是HTML格式的,该参数不传默认为false。
//遍历添加图片资源
for (int i = 0; i < srcPath.length; i++) {
FileSystemResource res = new FileSystemResource(new File(srcPath[i]));//通过FileSystemResource构造静态资源
helper.addInline(resIds[i], res);//调用addInline方法将资源加入邮件对象中
}
javaMailSender.send(message);
} catch (MessagingException e) {
System.out.println("发送失败");
}
}
控制器里添加访问方法
@Autowired
private MailService mailService;
@GetMapping("/sendImg/{to}")
public R sendImg(@PathVariable String to){
String subject = "邮件主题:XXX";
String content = "邮件内容:" +
"<div>hello,这是一封带图片资源的邮件:" +
"这是图片1:<div><img src='cid:p01'/></div>" +
"这是图片2:<div><img src='cid:p02'/></div>" +
"</div>";//通过cid:资源ID来显示图片资源
String[] srcPath = {
"C:\\Users\\admin\\Desktop\\1.png",
"C:\\Users\\admin\\Desktop\\2.png"
};//桌面放这两张图
String[] resIds = {"p01", "p02"};//定义资源ID叫p01、p02
mailService.sendMailWithImg(to, subject, content, srcPath, resIds);
return R.ok();
}
用swagger测试接收邮件成功