thymeleaf模板配置邮件发送

thymeleaf模板配置邮件发送

1、导包

在项目POM中导入依赖包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2、目录结构

image-20200417212434177

3、配置thymeleaf

spring:
  thymeleaf:
    cache: false
    prefix: classpath:/templates/
    suffix: .html

在未配置的情况下,默认路径为resources/templates下

4、准备html模板tdcAlarmEmail.html(节选)

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>xx项目-报警通知</title>
    <style>
        .button {
            background-color: #4CAF50;
            border-radius: 12px;
            border: none;
            color: white;
            padding: 10px 25px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 18px;
            margin: 4px 2px;
            cursor: pointer;
            box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
        }

        .button:hover {
            box-shadow: 0 12px 16px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19);
        }
    </style>
</head>
<body style="margin: 0;padding: 0;">

<br/>
<br/>
<table align="center" border="1" cellpadding="0" cellspacing="0" width="600px">
    <tr>
        <td>
            <table align="center" border="0" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;">
                <tr>
                    <td bgcolor="#ffffff" style="padding: 0px 30px 20px 30px">
                        <h3 style="text-align: center">xx项目-报警通知</h3>
                        <table border="0" cellpadding="0" cellspacing="0" width="100%">
                            <tr>
                                <td style="padding: 5px 0 5px 0; text-align: center" width="20%">车牌:</td>
                                <td style="padding: 5px 0 5px 0" width="80%"><span th:text="${plat}"></span></td>
                            </tr>
                            <tr>
                                <td style="padding: 5px 0 5px 0; text-align: center" width="20%">司机:</td>
                                <td style="padding: 5px 0 5px 0" width="80%"><span th:text="${contact1}"></span></td>
                            </tr>
                            <tr>
                                <td style="padding: 5px 0 5px 0; text-align: center" width="20%">手机:</td>
                                <td style="padding: 5px 0 5px 0" width="80%"><span th:text="${contact1Phone}"></span></td>
                            </tr>
                            <tr>
                                <td style="padding: 5px 0 5px 0; text-align: center" width="20%">设备:</td>
                                <td style="padding: 5px 0 5px 0" width="80%"><span th:text="${deviceCode}"></span></td>
                            </tr>
                            <tr>
                                <td style="padding: 5px 0 5px 0; text-align: center" width="20%">速度:</td>
                                <td style="padding: 5px 0 5px 0" width="80%"><span th:text="${speed}"></span></td>
                            </tr>
                            <tr>
                                <td style="padding: 5px 0 5px 0; text-align: center" width="20%">时间:</td>
                                <td style="padding: 5px 0 5px 0" width="80%"><span th:text="${startTime}"></span></td>
                            </tr>
                            <tr>
                                <td style="padding: 5px 0 5px 0; text-align: center" width="20%">位置:</td>
                                <td style="padding: 5px 0 5px 0" width="80%"><span th:text="${alarmPlace}"></span></td>
                            </tr>

                            <tr>
                                <table border="0" cellpadding="0" cellspacing="0" width="100%">
                                    <tr>
                                        <td style="padding: 10px 0px 10px 0px;color: #c70000;">
                                            请及时处理报警信息!<br/>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td style="padding: 10px 0px 10px 0px">
                                            如需帮助,请联系管理员:<br/>
                                            彭xx:pengxx@xx.com<br/>&nbsp;&nbsp;&nbsp;x:wux2@xx.com<br/>
                                        </td>
                                    </tr>
                                </table>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
    <tr>
        <table cellpadding="0" cellspacing="0" width="100%">
            <tr>
                <td  align="center" style="padding: 5px 0px 5px 0px">
                    <a class="button" href="https://xxx.com"  >查看详情</a>
                </td>
            </tr>
        </table>
    </tr>
</table>
</body>
</html>

5、Email推送关键代码(节选)


public class AlarmMessageServiceImpl implements AlarmMessageService {

	protected final Log logger = LogFactory.getLog(this.getClass());


    @Autowired
    private JavaMailSender mailSender;

	@Autowired
	private TemplateEngine templateEngine;

	/**
	 * xx项目-报警推送
	 * @param alarm
	 */
	public void SendAlarmMsg_TDC(BdsAlarmModel alarm){
		try {

				Map<String,Object> alarmInfo = new HashMap<>();
				alarmInfo.put("plat",(String) map.get("plat"));
				alarmInfo.put("contact1",(String) map.get("contact1"));
				alarmInfo.put("contact1Phone",(String) map.get("contact1_phone"));
				alarmInfo.put("deviceCode",alarm.getDeviceCode());
				alarmInfo.put("speed",alarm.getSpeed());
				alarmInfo.put("startTime",DateUtils.DateToString(alarm.getStartTime()));
				alarmInfo.put("alarmPlace",alarm.getAlarmPlace());
				sendSimpleMail((String) map.get("email"),"xx项目-【"
                               +(String)map.get("plat")
                               +"】",alarmInfo,"tdcAlarmEmail");
		} catch (Exception e) {
			logger.error("发送报错:即时, "+JSON.toJSONString(alarm) , e);
		}
	}


	/**
	 * 使用thymeleaf模板引擎
	 * @param variables
	 * @param templateName
	 */
	public void sendSimpleMail(String to,String title,Map<String,Object> variables,String templateName){
		MimeMessage mimeMessage = null;
		try {
			mimeMessage = mailSender.createMimeMessage();
			MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
			// 设置发件人邮箱
			helper.setFrom("xx@qq.com");
			// 设置收件人邮箱
			helper.setTo(to);
			// 设置邮件标题
			helper.setSubject(title);
			// 添加正文(使用thymeleaf模板)
			Context context = new Context();
			context.setVariables(variables);
			String content = templateEngine.process(templateName, context);
			helper.setText(content, true);
			// 发送邮件
			mailSender.send(mimeMessage);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

附录

在项目的application.properties中配置qq邮箱用于推送

#电子邮箱配置
spring.mail.host=smtp.qq.com
spring.mail.username=139301xxxx@qq.com
#password为QQ邮箱申请的授权吗
spring.mail.password=iscbakyhxxxxxxx  
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

image-20200417214440456

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Thymeleaf模板发送邮件。下面是一些基本步骤: 1. 配置邮件服务:首先,您需要在应用程序中配置邮件服务。您可以使用Spring Boot提供的自动配置功能来简化此过程。确保在`application.properties`(或`application.yml`)文件中配置正确的SMTP服务器和凭据。 2. 创建Thymeleaf模板:使用Thymeleaf模板引擎创建您的邮件内容模板。您可以在资源文件夹下创建一个`templates`文件夹,并在其中添加您的邮件模板文件,以`.html`扩展名结尾。在模板中,您可以使用Thymeleaf的标签和表达式来动态地生成邮件内容。 3. 创建邮件服务类:创建一个邮件服务类,该类将负责实际发送邮件。您可以使用Spring Boot提供的`JavaMailSender`接口来发送电子邮件。在该类中,您需要注入`JavaMailSender`并使用它的`send()`方法发送电子邮件。 4. 使用Thymeleaf渲染模板:在发送电子邮件之前,您需要使用Thymeleaf模板渲染为字符串。您可以使用Thymeleaf的`TemplateEngine`类来完成此操作。将渲染后的字符串设置为电子邮件的内容。 5. 发送电子邮件:最后,通过调用邮件服务类的方法来发送电子邮件。传递收件人、主题和内容等参数,并使用`JavaMailSender`发送电子邮件。 这是一个简单的示例代码,演示如何使用Thymeleaf模板发送电子邮件: ```java @Service public class EmailService { @Autowired private JavaMailSender javaMailSender; @Autowired private TemplateEngine templateEngine; public void sendEmail(String recipient, String subject, Map<String, Object> model) { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "UTF-8"); try { Context context = new Context(); context.setVariables(model); String htmlContent = templateEngine.process("email-template", context); helper.setTo(recipient); helper.setSubject(subject); helper.setText(htmlContent, true); javaMailSender.send(mimeMessage); } catch (MessagingException e) { // 处理发送邮件异常 } } } ``` 请注意,上述代码中的`email-template`应该是您实际创建的Thymeleaf模板文件的名称。 希望这可以帮助您使用Thymeleaf模板发送电子邮件!如有任何疑问,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值