springboot富文本html邮件,最简单的 springboot 发送邮件,使用thymeleaf模板

packagecom.bootdo.oa.service.impl;importcom.bootdo.common.exception.SystemException;importcom.bootdo.oa.domain.MailDO;importcom.bootdo.oa.service.MailService;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.core.io.FileSystemResource;importorg.springframework.mail.MailException;importorg.springframework.mail.SimpleMailMessage;importorg.springframework.mail.javamail.JavaMailSender;importorg.springframework.mail.javamail.MimeMessageHelper;importorg.springframework.scheduling.annotation.Async;importorg.springframework.stereotype.Service;importorg.thymeleaf.TemplateEngine;importorg.thymeleaf.context.Context;importjavax.mail.MessagingException;importjavax.mail.internet.MimeMessage;importjava.io.File;/*** 发送邮件*/@Servicepublic class MailServiceImpl implementsMailService {private final static Logger log = LoggerFactory.getLogger(MailServiceImpl.class);//template模板引擎

@AutowiredprivateTemplateEngine templateEngine;

@AutowiredprivateJavaMailSender javaMailSender;

@Value("${spring.mail.username}")privateString from;/*** 纯文本邮件

*@parammail*/@Async //不解释不懂自行百度,友情提示:有坑

@Overridepublic voidsendTextMail(MailDO mail){//建立邮件消息

SimpleMailMessage message = newSimpleMailMessage();

message.setFrom(from);//发送人的邮箱

message.setSubject(mail.getTitle()); //标题

message.setTo(mail.getEmail()); //发给谁 对方邮箱

message.setText(mail.getContent()); //内容

try{

javaMailSender.send(message);//发送

} catch(MailException e) {

log.error("纯文本邮件发送失败->message:{}",e.getMessage());throw new SystemException("邮件发送失败");

}

}/*** 发送的邮件是富文本(附件,图片,html等)

*@parammailDO

*@paramisShowHtml 是否解析html*/@Async

@Overridepublic void sendHtmlMail(MailDO mailDO, booleanisShowHtml) {try{

MimeMessage mimeMessage=javaMailSender.createMimeMessage();//是否发送的邮件是富文本(附件,图片,html等)

MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);

messageHelper.setFrom(from);//发送人的邮箱

messageHelper.setTo(mailDO.getEmail());//发给谁 对方邮箱

messageHelper.setSubject(mailDO.getTitle());//标题

messageHelper.setText(mailDO.getContent(),isShowHtml);//false,显示原始html代码,无效果//判断是否有附加图片等

if(mailDO.getAttachment() != null && mailDO.getAttachment().size() > 0){

mailDO.getAttachment().entrySet().stream().forEach(entrySet->{try{

File file= newFile(String.valueOf(entrySet.getValue()));if(file.exists()){

messageHelper.addAttachment(entrySet.getKey(),newFileSystemResource(file));

}

}catch(MessagingException e) {

log.error("附件发送失败->message:{}",e.getMessage());throw new SystemException("附件发送失败");

}

});

}//发送

javaMailSender.send(mimeMessage);

}catch(MessagingException e) {

log.error("富文本邮件发送失败->message:{}",e.getMessage());throw new SystemException("邮件发送失败");

}

}/*** 发送模板邮件 使用thymeleaf模板

* 若果使用freemarker模板

* Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);

* configuration.setClassForTemplateLoading(this.getClass(), "/templates");

* String emailContent = FreeMarkerTemplateUtils.processTemplateIntoString(configuration.getTemplate("mail.ftl"), params);

*@parammailDO*/@Async

@Overridepublic voidsendTemplateMail(MailDO mailDO) {try{

MimeMessage mimeMessage=javaMailSender.createMimeMessage();

MimeMessageHelper messageHelper= new MimeMessageHelper(mimeMessage,true);

messageHelper.setFrom(from);//发送人的邮箱

messageHelper.setTo(mailDO.getEmail());//发给谁 对方邮箱

messageHelper.setSubject(mailDO.getTitle()); //标题//使用模板thymeleaf//Context是导这个包import org.thymeleaf.context.Context;

Context context = newContext();//定义模板数据

context.setVariables(mailDO.getAttachment());//获取thymeleaf的html模板

String emailContent = templateEngine.process("/mail/mail",context); //指定模板路径

messageHelper.setText(emailContent,true);//发送邮件

javaMailSender.send(mimeMessage);

}catch(MessagingException e) {

log.error("模板邮件发送失败->message:{}",e.getMessage());throw new SystemException("邮件发送失败");

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值