/Valine-Admin

一个 Valine 的拓展应用,用来增强 Valine 的邮件通知。

Primary LanguageJavaScriptMIT LicenseMIT

Valine Admin

简介

Valine Admin 项目是一个对 Valine 评论系统的拓展应用,可增强 Valine 的邮件通知功能。基于 Leancloud 的云引擎与云函数,主要实现评论邮件通知、评论管理、自定义邮件通知模板等功能,而且还可以提供邮件 通知站长@ 通知 的功能。

点击查看演示

部署

  1. 需要确保 Valine 的基础功能是正常的,参考 Valine Docs
  2. 进入 Leancloud 对应的 Valine 应用中。
  3. 点击 云引擎 -> 设置 填写代码库:https://github.com/hongweifuture/Valine-Admin,保存 代码库
  4. 设置自定义环境变量,需要设置云引擎的环境变量以提供必要的信息,变量参数参考下面的配置项 自定义环境变量 配置项
变量 示例 说明
SITE_NAME HONGWEI'S Blog [必填] 网站名称
SITE_URL https://www.zhwei.cn [必填] 网站地址,最后不要加 /
SMTP_SERVICE QQ [必填] 邮件服务提供商,支持 QQ、163、126、Gmail 以及 更多。 --- 如这里没有你使用的邮件提供商,请查看自定义邮件服务器
SMTP_USER xxxx@qq.com [必填] SMTP登录用户,一般为邮箱地址
SMTP_PASS xxxx [必填] SMTP登录密码,一般为授权码,而不是邮箱的登陆密码,请自行查询对应邮件服务商的获取方式
SENDER_NAME HONGWEI'S Blog Valine 评论提醒 [可选] 发件人
ADMIN_URL https://xxx.leanapp.cn/ [建议] Web主机二级域名,用于自动唤醒
TO_EMAIL xxxxx@gmail.com [可选] 指定站长收信邮箱,默认值为SITE_USER。用于 SMTP 发件人与站长收件人不一致的情况下使用。
TEMPLATE_NAME rainbow [可选] 通知邮件的模板(default和rainbow),参考高级功能
  1. 点击 云引擎 -> 部署,选择Git源码部署,分支或版本号输入master,下载最新依赖(可选),部署 Git master

后台管理

  1. 点击 云引擎 -> 设置,在Web主机域名位置点击申请,获取二级域名,现在的二级域名不支持自定义,如果想好记请参考高级功能 Web主机域名
  2. 设置后台管理登录信息,点击 存储 -> 结构化数据,选择_User -> 添加行,只需要填写passwordusernameemail这三个字段即可, 使用 email 作为账号登陆、password 作为账号密码、username 任意即可。(为了安全考虑,此 email 必须为配置中的 SMTP_USER 或 TO_EMAIL, 否则不允许登录) 后台管理
  3. 此后,可以通过https://二级域名.leanapp.cn/管理评论

定时任务

免费版的 LeanCloud 容器,是有强制性休眠策略的,不能 24 小时运行:

  • 每天必须休眠 6 个小时
  • 30 分钟内没有外部请求,则休眠
  • 休眠后如果有新的外部请求实例则马上启动(但激活时此次发送邮件会失败)。

分析了一下上方的策略,如果不想付费的话,最佳使用方案就设置定时器,目前基于 LeanCloud 自带定时器实现了两种云函数定时任务:

  • 自动唤醒,定时访问Web APP二级域名防止云引擎休眠(推荐)
  • 定时检查,每天定时检查24小时内漏发的邮件通知

配置

  1. 首先需要添加环境变量,点击 云引擎 -> 设置,配置自定义环境变量,变量名ADMIN_URL,变量值Web 主机域名,即二级域名地址,添加后重启容器环境变量才会生效
  2. 配置定时任务,击 云引擎 -> 定时任务
  • 配置自动唤醒(推荐),创建定时任务,名称任意,生产环境选择self-wake云函数,Cron表达式填入0 */20 7-23 * * ?,表示每天 7 - 23 点每 20 分钟访问一次,这样可以保持每天的绝大多数时间邮件服务是正常的。
  • 配置定时检查,创建定时任务,名称任意,生产环境选择resend-mails云函数,Cron表达式填入0 0 8 * * ?,表示每天早8点检查过去24小时内漏发的通知邮件并补发

高级配置

自定义邮件模板

自定义收件邮箱

自定义邮件服务器

Web 评论管理

好记的二级域名

Leancloud 休眠策略(必看)

开发指南

更新历史

  • 12.01 新增自助添加定时器方式。详见: LeanCloud 自带定时器[推荐方式]

  • 7.30 修复 @ 邮件通知出错 bug (需 Valine 1.3.0 支持),优化发件逻辑,站长发的评论不再收到邮件通知。

  • 7.7 兼容 valine v1.2.0-beta 版本对 at 的更改 点击查看

  • 7.1 修复 Web 后台登录安全 bug

  • 6.14 添加自定义邮件服务器功能. 点击查看

常见问题

为什么我收不到邮件?

  • 请确认评论时留下的邮箱不是环境变量里的 SMTP_USERTO_EMAIL 里的邮箱,原因详见 7.30 更新日志。
  • 请确认修改环境变量后已重启容器。
  • 对于 QQ / 网易 163 邮箱,请确认你输入的是 SMTP 的授权码,而不是登陆密码。QQ邮箱获取授权码 网易邮箱获取授权码

为什么我刚开始测试的时候是正常的,但后面的邮件没有通知?

请确认已针对 LeanCloud免费容器休眠策略配置了定时器,详见:LeanCloud 休眠策略

如何重启容器?

注: 更新新版本与更改环境变量均需要重启容器后生效。

注:本项目修改于 panjunwen 的项目 : Valine-Admin (部分逻辑于功能不同,还请读者不要搞混配置项.)

其他

配合 Valine 评论系统使用的 Valine-Admin 及显示个性头像