Browse Source

🎈 perf: 优化邮件模板

Pchen0 1 month ago
parent
commit
f0b8c0f32e
2 changed files with 44 additions and 31 deletions
  1. 18 5
      plugin/Email/emailLayout.js
  2. 26 26
      plugin/Email/emailTemplate.js

+ 18 - 5
plugin/Email/emailLayout.js

@@ -4,7 +4,7 @@ const BRAND = 'RunForge'
 
 
 /** 页脚固定说明(分段展示,避免单行过长) */
 /** 页脚固定说明(分段展示,避免单行过长) */
 const FOOTER_DISCLAIMER = {
 const FOOTER_DISCLAIMER = {
-    label: '本邮件由系统自动发送,请勿直接回复本邮件。',
+    label: '本邮件由系统自动发送,请勿直接回复。',
     helpPrefix: '如需帮助,请访问 RunForge 网站提交工单,或发送邮件至',
     helpPrefix: '如需帮助,请访问 RunForge 网站提交工单,或发送邮件至',
     helpEmail: 'service@xxoo365.top'
     helpEmail: 'service@xxoo365.top'
 }
 }
@@ -110,7 +110,20 @@ function renderEmail(opts) {
   }
   }
   .brand-bar { height:4px; background:${accent}; }
   .brand-bar { height:4px; background:${accent}; }
   .inner { padding:28px 28px 20px; }
   .inner { padding:28px 28px 20px; }
-  .brand { font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:#64748b; margin:0 0 8px; font-weight:600; }
+  .inner-stack {
+    display:flex;
+    flex-direction:column;
+  }
+  .inner-stack .brand {
+    order:-1;
+    margin:0 0 8px;
+    font-size:11px;
+    letter-spacing:0.12em;
+    text-transform:uppercase;
+    color:#64748b;
+    font-weight:600;
+  }
+  .inner-stack .email-headline { margin:0 0 20px; }
   h1 { margin:0 0 20px; font-size:20px; line-height:1.35; color:#0f172a; font-weight:600; }
   h1 { margin:0 0 20px; font-size:20px; line-height:1.35; color:#0f172a; font-weight:600; }
   .body-text { font-size:15px; line-height:1.65; color:#334155; margin:0 0 14px; }
   .body-text { font-size:15px; line-height:1.65; color:#334155; margin:0 0 14px; }
   .body-text.last { margin-bottom:0; }
   .body-text.last { margin-bottom:0; }
@@ -219,10 +232,10 @@ function renderEmail(opts) {
 <div class="wrapper">
 <div class="wrapper">
   <div class="card">
   <div class="card">
     <div class="brand-bar"></div>
     <div class="brand-bar"></div>
-    <div class="inner">
+    <div class="inner inner-stack">
+      <h1 class="email-headline">${escapeHtml(headline)}${headlineSuffixHtml}</h1>
       <p class="brand">${BRAND} · 系统通知</p>
       <p class="brand">${BRAND} · 系统通知</p>
-      <h1>${escapeHtml(headline)}${headlineSuffixHtml}</h1>
-      ${bodyHtml}
+      <div class="email-body">${bodyHtml}</div>
     </div>
     </div>
     <div class="footer">
     <div class="footer">
       <div class="footer-inner">
       <div class="footer-inner">

+ 26 - 26
plugin/Email/emailTemplate.js

@@ -26,10 +26,10 @@ class emailTemplate {
         ].join('')
         ].join('')
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|邮箱验证码',
+            '🔑 邮箱验证码',
             renderEmail({
             renderEmail({
                 pageTitle: '邮箱验证码',
                 pageTitle: '邮箱验证码',
-                headline: '邮箱验证码',
+                headline: '🔑 邮箱验证码',
                 variant: 'default',
                 variant: 'default',
                 bodyHtml,
                 bodyHtml,
                 footerExtra: '请勿向他人泄露验证码。'
                 footerExtra: '请勿向他人泄露验证码。'
@@ -47,10 +47,10 @@ class emailTemplate {
         ].join('')
         ].join('')
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|邮箱换绑成功',
+            '邮箱换绑成功',
             renderEmail({
             renderEmail({
                 pageTitle: '邮箱换绑成功',
                 pageTitle: '邮箱换绑成功',
-                headline: '邮箱换绑成功',
+                headline: '邮箱换绑成功',
                 variant: 'success',
                 variant: 'success',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -70,10 +70,10 @@ class emailTemplate {
         ].join('')
         ].join('')
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|注册成功',
+            '注册成功',
             renderEmail({
             renderEmail({
                 pageTitle: '注册成功',
                 pageTitle: '注册成功',
-                headline: '注册成功',
+                headline: '注册成功',
                 variant: 'success',
                 variant: 'success',
                 bodyHtml,
                 bodyHtml,
                 footerExtra: '如非本人注册,请尽快联系客服处理。'
                 footerExtra: '如非本人注册,请尽快联系客服处理。'
@@ -102,10 +102,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|乐跑账号更新成功',
+            '乐跑账号更新成功',
             renderEmail({
             renderEmail({
                 pageTitle: '乐跑账号更新成功',
                 pageTitle: '乐跑账号更新成功',
-                headline: '乐跑账号信息已更新',
+                headline: '乐跑账号信息已更新',
                 variant: 'success',
                 variant: 'success',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -123,10 +123,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|乐跑目标已完成',
+            '🏁 乐跑目标已完成',
             renderEmail({
             renderEmail({
                 pageTitle: '乐跑目标已完成',
                 pageTitle: '乐跑目标已完成',
-                headline: '乐跑目标已完成',
+                headline: '🏁 乐跑目标已全部完成',
                 variant: 'success',
                 variant: 'success',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -171,10 +171,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|乐跑成功通知',
+            '乐跑成功通知',
             renderEmail({
             renderEmail({
                 pageTitle: '乐跑成功',
                 pageTitle: '乐跑成功',
-                headline: '乐跑成功通知',
+                headline: '✅ 乐跑已成功记录',
                 variant: 'success',
                 variant: 'success',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -199,10 +199,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|乐跑失败通知',
+            '乐跑失败通知',
             renderEmail({
             renderEmail({
                 pageTitle: '乐跑失败',
                 pageTitle: '乐跑失败',
-                headline: '乐跑失败通知',
+                headline: '❌ 乐跑未能完成',
                 variant: 'danger',
                 variant: 'danger',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -230,10 +230,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|工单新回复',
+            '💬 工单新回复',
             renderEmail({
             renderEmail({
                 pageTitle: '工单状态更新',
                 pageTitle: '工单状态更新',
-                headline: '工单有新回复',
+                headline: '💬 工单有新回复',
                 variant: 'default',
                 variant: 'default',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -257,10 +257,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|赠送次数待审核',
+            '赠送次数待审核',
             renderEmail({
             renderEmail({
                 pageTitle: '赠送次数待审核',
                 pageTitle: '赠送次数待审核',
-                headline: '赠送次数待审核',
+                headline: '赠送次数待审核',
                 variant: 'warning',
                 variant: 'warning',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -270,7 +270,7 @@ class emailTemplate {
     async lepaoAdminWarning(email, data) {
     async lepaoAdminWarning(email, data) {
         const time = new Date().getTime()
         const time = new Date().getTime()
         const safe = (v) => (v === undefined || v === null) ? '' : String(v)
         const safe = (v) => (v === undefined || v === null) ? '' : String(v)
-        const subject = 'RunForge|乐跑异常告警'
+        const subject = '🚨 乐跑异常告警'
 
 
         const bodyHtml = [
         const bodyHtml = [
             pEsc('尊敬的管理员:'),
             pEsc('尊敬的管理员:'),
@@ -292,7 +292,7 @@ class emailTemplate {
             subject,
             subject,
             renderEmail({
             renderEmail({
                 pageTitle: '乐跑异常告警',
                 pageTitle: '乐跑异常告警',
-                headline: '乐跑异常告警',
+                headline: '🚨 乐跑异常告警',
                 headlineSuffixHtml: '<span class="tag">非常见错误</span>',
                 headlineSuffixHtml: '<span class="tag">非常见错误</span>',
                 variant: 'danger',
                 variant: 'danger',
                 bodyHtml
                 bodyHtml
@@ -314,10 +314,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|赠送次数审核通过',
+            '赠送次数审核通过',
             renderEmail({
             renderEmail({
                 pageTitle: '赠送次数审核通过',
                 pageTitle: '赠送次数审核通过',
-                headline: '赠送次数已到账',
+                headline: '赠送次数已到账',
                 variant: 'success',
                 variant: 'success',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -340,10 +340,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|赠送次数审核未通过',
+            '⚠️ 赠送次数审核未通过',
             renderEmail({
             renderEmail({
                 pageTitle: '赠送次数审核未通过',
                 pageTitle: '赠送次数审核未通过',
-                headline: '赠送次数审核未通过',
+                headline: '⚠️ 赠送次数审核未通过',
                 variant: 'warning',
                 variant: 'warning',
                 bodyHtml
                 bodyHtml
             })
             })
@@ -376,10 +376,10 @@ class emailTemplate {
 
 
         await sendEmail(
         await sendEmail(
             email,
             email,
-            'RunForge|宿舍电费提醒',
+            '宿舍电费提醒',
             renderEmail({
             renderEmail({
                 pageTitle: '宿舍电费提醒',
                 pageTitle: '宿舍电费提醒',
-                headline: '宿舍电费余额提醒',
+                headline: '宿舍电费余额提醒',
                 variant: 'warning',
                 variant: 'warning',
                 bodyHtml
                 bodyHtml
             })
             })