添加模板邮件-liyuchen

This commit is contained in:
李宇辰 2023-04-14 09:25:59 +08:00
parent c60c1b4d9c
commit 2af85006c6
5 changed files with 63 additions and 4 deletions

View File

@ -53,4 +53,9 @@ public class Email {
*/
private Map<String, File> attachments;
/**
* 发送数据
*/
private Map<String, Object> dataMap;
}

View File

@ -12,4 +12,6 @@ import javax.mail.MessagingException;
public interface EmailService {
void sendMimeMessage(Email email) throws MessagingException;
void sendTemplate(Email email) throws MessagingException;
}

View File

@ -3,13 +3,15 @@ package com.kening.vordm.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kening.vordm.entity.Administrator;
import com.kening.vordm.entity.Email;
import com.kening.vordm.mapper.AdministratorMapper;
import com.kening.vordm.service.AdministratorService;
import com.kening.vordm.util.SendMailUtil;
import com.kening.vordm.service.EmailService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.DigestUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
@ -26,7 +28,7 @@ import java.util.Map;
@AllArgsConstructor
public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMapper,Administrator> implements AdministratorService {
private SendMailUtil sendMailUtil;
private EmailService emailService;
/**
* 根据角色名称获取角色id
@ -69,7 +71,12 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
dataMap.put("account", administrator.getAccount());
dataMap.put("password", "1234");
dataMap.put("time", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")));
sendMailUtil.sendTemplateMail(administrator.getEmail(),subject,emailTemplate,dataMap);
Email email = new Email();
email.setSubject(subject);
email.setDataMap(dataMap);
email.setTos(new String[]{administrator.getEmail()});
email.setForm("15806764589@163.com");
emailService.sendTemplate(email);
log.info("邮件发送成功");
}catch (Exception e){
log.error("发送邮件失败:{}",e);

View File

@ -7,11 +7,15 @@ import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Iterator;
import java.util.Map;
/**
@ -24,6 +28,8 @@ public class EmailServiceImpl implements EmailService {
private final JavaMailSender javaMailSender;
private final TemplateEngine templateEngine;
@Value("${spring.mail.username}")
private String from;
@ -32,7 +38,41 @@ public class EmailServiceImpl implements EmailService {
javaMailSender.send(buildMimeMessage(email));
}
/**
@Override
@Async("taskExecutor")
public void sendTemplate(Email email) throws MessagingException {
javaMailSender.send(buildTemplateMail(email));
}
/**
* 构建模板邮件
* @param email
* @return
* @throws MessagingException
*/
public MimeMessage buildTemplateMail(Email email) throws MessagingException {
//模板数据内容
Context context = new Context();
//插入模板数据
for (Map.Entry<String, Object> entry : email.getDataMap().entrySet()) {
context.setVariable(entry.getKey(), entry.getValue());
}
//使用的模板
String templateContent = templateEngine.process("email", context);
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
//发送人
helper.setFrom(from);
//收件人
helper.setTo(email.getTos());
//主题
helper.setSubject(email.getSubject());
//发送内容
helper.setText(templateContent, true);
return message;
}
/**
* 构建邮件发送内容
* @param email 待发送的邮件
* @return 邮件消息

View File

@ -101,6 +101,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
</project>