我正在处理两个电子邮件模板,一个将发送一个确认url来验证用户的帐户,另一个将发送一个重置密码链接。
激活帐户
<p>Use <a th:href="${confirmationUrl}" target="_blank" rel="noopener">this link</a> to activate your account now</p>
重置密码
<a th:href="${resetPasswordUrl}" target="_blank">Reset password</a>
两个链接都接收 th:href
来自以下方法的属性:
此方法发送验证令牌链接以激活帐户
public void sendVerificationToken(User user) {
String token = jwtTokenService.genEmailVerificationToken(user.getId());
logger.info("Sending verification token to user. user={} email={} token={}",
user.getId(), user.getEmail(), token);
String confirmationUrl = null;
try {
confirmationUrl = new URIBuilder(verifyEmailUrl)
.addParameter(VERIFY_EMAIL_ENDPOINT_PARAM, token)
.build().toString();
model.addAttribute("confirmationUrl", confirmationUrl);
}
catch (URISyntaxException e) {
logger.error("URL stored as redirect url for verify email is not valid.");
throw ErrorFactory.serverError("Error");
}
emailService.sendAccountConfirmationEmail(user.getEmail(), confirmationUrl);
}
此方法发送密码重置链接
public void resetPasswordRequest(User user) {
logger.info("Request for password recovery. email={}",
user.getEmail());
String token = jwtTokenService.genPasswordResetToken(user.getId());
String resetPasswordUrl = null;
try {
resetPasswordUrl = new URIBuilder(resetPasswordUrl)
.addParameter(RESET_PASS_ENDPOINT_PARAM, token)
.build().toString();
model.addAttribute("resetPasswordUrl", resetPasswordUrl);
}
catch (URISyntaxException e) {
logger.error("URL stored as target url for reset password email is not valid.");
throw ErrorFactory.serverError("Error");
}
emailService.sendPasswordReset(user.getEmail(), resetPasswordUrl);
}
我试图得到 confirmationUrl
以及 resetPasswordUrl
在html模板中使用的方法是将model param声明为这两个方法之上的类级属性,然后使用 model.addAttribute("attributeName", attribute)
.
private Model model;
但不知为什么,我 Cannot resolve 'resetPasswordUrl'
以及 Cannot resolve 'confirmationUrl'
在模板文件上。好像它不认识属性。
2条答案
按热度按时间qcuzuvrc1#
我同意@srinivasa raghavan所说的。我认为没有必要在邮寄步骤中使用模型对象。
1.如果发送确认url的方法是这样的,那就足够了。您可以调整示例代码以使其更通用。
2.为了处理我们的模板,您将在我们的spring email配置中配置一个专门为电子邮件处理配置的templateengine。您可以参考thymeleaf文档来创建
TemplateEngine
.vcudknz32#
您是否将模型对象注入到html模板中?因为我在你的问题上看不出来。
使用
SpringTemplateEngine
并以这种方式注入模板变量: