添加模板邮件-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, File> attachments;
/**
* 发送数据
*/
private Map<String, Object> dataMap;
} }

View File

@ -12,4 +12,6 @@ import javax.mail.MessagingException;
public interface EmailService { public interface EmailService {
void sendMimeMessage(Email email) throws MessagingException; 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.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kening.vordm.entity.Administrator; import com.kening.vordm.entity.Administrator;
import com.kening.vordm.entity.Email;
import com.kening.vordm.mapper.AdministratorMapper; import com.kening.vordm.mapper.AdministratorMapper;
import com.kening.vordm.service.AdministratorService; import com.kening.vordm.service.AdministratorService;
import com.kening.vordm.util.SendMailUtil; import com.kening.vordm.service.EmailService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.DigestUtil; import org.springblade.core.tool.utils.DigestUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.time.LocalDate;
@ -26,7 +28,7 @@ import java.util.Map;
@AllArgsConstructor @AllArgsConstructor
public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMapper,Administrator> implements AdministratorService { public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMapper,Administrator> implements AdministratorService {
private SendMailUtil sendMailUtil; private EmailService emailService;
/** /**
* 根据角色名称获取角色id * 根据角色名称获取角色id
@ -69,7 +71,12 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
dataMap.put("account", administrator.getAccount()); dataMap.put("account", administrator.getAccount());
dataMap.put("password", "1234"); dataMap.put("password", "1234");
dataMap.put("time", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"))); 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("邮件发送成功"); log.info("邮件发送成功");
}catch (Exception e){ }catch (Exception e){
log.error("发送邮件失败:{}",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.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException; import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import java.io.File; import java.io.File;
import java.util.Iterator;
import java.util.Map; import java.util.Map;
/** /**
@ -24,6 +28,8 @@ public class EmailServiceImpl implements EmailService {
private final JavaMailSender javaMailSender; private final JavaMailSender javaMailSender;
private final TemplateEngine templateEngine;
@Value("${spring.mail.username}") @Value("${spring.mail.username}")
private String from; private String from;
@ -32,6 +38,40 @@ public class EmailServiceImpl implements EmailService {
javaMailSender.send(buildMimeMessage(email)); 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 待发送的邮件 * @param email 待发送的邮件

View File

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