feat: support custom email templates. (#691)

pull/695/head
Ryan Wang 2020-03-18 21:38:26 +08:00 committed by GitHub
parent 8eac5716f1
commit c847bef498
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 19 deletions

View File

@ -48,7 +48,9 @@ public class CommentEventListener {
private final UserService userService;
public CommentEventListener(MailService mailService, OptionService optionService, PostCommentService postCommentService, SheetCommentService sheetCommentService, JournalCommentService journalCommentService, PostService postService, SheetService sheetService, JournalService journalService, UserService userService) {
private final ThemeService themeService;
public CommentEventListener(MailService mailService, OptionService optionService, PostCommentService postCommentService, SheetCommentService sheetCommentService, JournalCommentService journalCommentService, PostService postService, SheetService sheetService, JournalService journalService, UserService userService, ThemeService themeService) {
this.mailService = mailService;
this.optionService = optionService;
this.postCommentService = postCommentService;
@ -58,6 +60,7 @@ public class CommentEventListener {
this.sheetService = sheetService;
this.journalService = journalService;
this.userService = userService;
this.themeService = themeService;
}
/**
@ -90,8 +93,8 @@ public class CommentEventListener {
BasePostMinimalDTO post = postService.convertToMinimal(postService.getById(postComment.getPostId()));
data.put("url", post.getFullPath());
data.put("page", post.getTitle());
data.put("pageFullPath", post.getFullPath());
data.put("pageTitle", post.getTitle());
data.put("author", postComment.getAuthor());
data.put("content", postComment.getContent());
@ -106,8 +109,8 @@ public class CommentEventListener {
BasePostMinimalDTO sheet = sheetService.convertToMinimal(sheetService.getById(sheetComment.getPostId()));
data.put("url", sheet.getFullPath());
data.put("page", sheet.getTitle());
data.put("pageFullPath", sheet.getFullPath());
data.put("pageTitle", sheet.getTitle());
data.put("author", sheetComment.getAuthor());
data.put("content", sheetComment.getContent());
@ -124,15 +127,21 @@ public class CommentEventListener {
StrBuilder url = new StrBuilder(optionService.getBlogBaseUrl())
.append("/")
.append(optionService.getJournalsPrefix());
data.put("url", url.toString());
data.put("page", journal.getCreateTime());
data.put("pageFullPath", url.toString());
data.put("pageTitle", journal.getCreateTime());
data.put("author", journalComment.getAuthor());
data.put("content", journalComment.getContent());
subject.append("您的博客日志有了新的评论");
}
mailService.sendTemplateMail(user.getEmail(), subject.toString(), data, "common/mail_template/mail_notice.ftl");
String template = "common/mail_template/mail_notice.ftl";
if (themeService.templateExists("mail_template/mail_notice.ftl")) {
template = themeService.renderWithSuffix("mail_template/mail_notice");
}
mailService.sendTemplateMail(user.getEmail(), subject.toString(), data, template);
}
/**
@ -178,8 +187,8 @@ public class CommentEventListener {
BasePostMinimalDTO post = postService.convertToMinimal(postService.getById(postComment.getPostId()));
data.put("url", post.getFullPath());
data.put("page", post.getTitle());
data.put("pageFullPath", post.getFullPath());
data.put("pageTitle", post.getTitle());
data.put("baseAuthor", baseComment.getAuthor());
data.put("baseContent", baseComment.getContent());
data.put("replyAuthor", postComment.getAuthor());
@ -208,8 +217,8 @@ public class CommentEventListener {
BasePostMinimalDTO sheet = sheetService.convertToMinimal(sheetService.getById(sheetComment.getPostId()));
data.put("url", sheet.getFullPath());
data.put("page", sheet.getTitle());
data.put("pageFullPath", sheet.getFullPath());
data.put("pageTitle", sheet.getTitle());
data.put("baseAuthor", baseComment.getAuthor());
data.put("baseContent", baseComment.getContent());
data.put("replyAuthor", sheetComment.getAuthor());
@ -240,8 +249,8 @@ public class CommentEventListener {
StrBuilder url = new StrBuilder(optionService.getBlogBaseUrl())
.append("/")
.append(optionService.getJournalsPrefix());
data.put("url", url);
data.put("page", journal.getContent());
data.put("pageFullPath", url);
data.put("pageTitle", journal.getContent());
data.put("baseAuthor", baseComment.getAuthor());
data.put("baseContent", baseComment.getContent());
data.put("replyAuthor", journalComment.getAuthor());
@ -253,6 +262,12 @@ public class CommentEventListener {
.append("有了新的评论。");
}
mailService.sendTemplateMail(baseAuthorEmail, subject.toString(), data, "common/mail_template/mail_reply.ftl");
String template = "common/mail_template/mail_reply.ftl";
if (themeService.templateExists("mail_template/mail_reply.ftl")) {
template = themeService.renderWithSuffix("mail_template/mail_reply");
}
mailService.sendTemplateMail(baseAuthorEmail, subject.toString(), data, template);
}
}

View File

@ -6,13 +6,13 @@
</h1>
<div class="emailtext" style="background:#fff;padding:20px 32px 40px;">
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">${user.nickname!}, 您好!</p>
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">有访客在《${page!}》留言:</p>
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">有访客在《${pageTitle!}》留言:</p>
<br />
<p style="color: #6e6e6e;font-size:13px;line-height:24px;padding:10px 20px;background:#f8f8f8;margin:0">
${author!}${content!}
</p>
<br />
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">您可以点击<a href="${url!}">查看完整内容</a></p>
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">您可以点击<a href="${pageFullPath!}">查看完整内容</a></p>
</div>
</div>
</div>

View File

@ -7,14 +7,14 @@
<div class="emailtext" style="background:#fff;padding:20px 32px 40px;">
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">${baseAuthor!}, 您好!</p>
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">您在《${page!}》的留言:
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">您在《${pageTitle!}》的留言:
<br />
<p style="color: #6e6e6e;font-size:13px;line-height:24px;padding:10px 20px;background:#f8f8f8;margin:0">${baseContent!}</p>
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">${replyAuthor!} 给您的回复:
<br />
<p style="color: #6e6e6e;font-size:13px;line-height:24px;padding:10px 20px;background:#f8f8f8;margin:0">${replyContent!}</p>
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">您可以点击
<a href="${url!}">查看完整内容</a>
<a href="${pageFullPath!}">查看完整内容</a>
</p>
<p style="color: #6e6e6e;font-size:13px;line-height:24px;">欢迎再度光临
<a href="${blog_url!}">${blog_title!}</a>