Valine 评论系统通知邮件

麻了各种错误搞了一整天. 终于是搞好了, 暴风哭泣. 记一下踩过的坑.
数据导出导入问题
记录一个无关问题.
首先有一个很重要的问题, 当时注册 LeanCloud 的时候没太放在心上, 就是注册的中国区账号, 虽然服务器在中国, 但是由于一些原因不如国际服务器好用. 所以第一步是把数据搬迁一下.
我的东西比较少, 就是一点点少的可怜的 valine 评论, 直接导出评论类:

导出以后可以试试导入, 然后你就会发现出大问题: 有一个叫 InsertAt
的数据在原表中的类型是 Date
, 但导出的 json
文件里他是 "InsertAt": "xxxxx"
这样的. 然后再导入进取, 这一列数据类型就会变成 String
! 什么鬼啊! 后来翻看文档, 发现 Date
数据在导出后应该是这样的(官方示例):
"publishedAt": {
"__type": "Date",
"iso": "2015-11-27T19:05:21.377Z"
},
照着这个样子批量修改 InsertAt
就可以了. 也不知道是不是我导出的姿势不对.
导出和导入都会给你的邮箱发邮件提醒. 如果导入的时候一直转圈圈, 那么看看邮件, 是不是导入失败, 失败的原因是什么. (屑网站连失败提醒都没有!) 我这里遇到的问题是 json 格式问题(因为我用 sublime 编辑了这个文件, 我的 sublime 有一个自动标点替换, 把中文的引号换乘了英文, 然后emmm).
Gmail 开启 SMTP 和应用专用密码
不多说, 直接挂官方文档
注意几个点
- 是开启 IMTP,
- 允许其他软件登录
- 最后是记住 SMTP 的用户密码是 google 账号, SMTP 主机名是
smtp.gmail.com
, 端口是465
然后设置应用专用密码, 后续用这个密码登录 Gamil.
部署 Valine-Admin 云引擎

下面这里输入 Valine-Admin 的仓库地址
https://github.com/zhaojun1998/Valine-Admin
当然可以把这个 fork 一下自己 DIY 然后用自己的地址, 以后再说叭.

然后他会开始启动, 途中会输出启动日志, 成功后如下所示:

然后就是设置变量, 对着README设置.
本人用的是 Gmail, 天杀的 SMTP 预设服务里的 Gmail 不知道是不是设置错了, 害得我搞了一整天, 也不知道哪里出了问题, 官网 issue 也没人提这个问题, 果然是 valine 被抛弃了啊. 所以需要手动设置 SMTP: 不要填 SMTP_SERVICE
, 根据 Gmail官方文档 填上 SMTP_HOST
为 smtp.gmail.com
和 SMTP_HOST
为 465
.
如下:

LeanCloud休眠策略对策
大概是这样?
免费版的 LeanCloud 容器, 是有强制性休眠策略的, 不能 24 小时运行:
- 每天必须休眠 6 个小时
- 30 分钟内没有外部请求, 则休眠.
- 休眠后如果有新的外部请求实例则马上启动 (但激活时此次发送邮件会失败) .
分析了一下上方的策略, 如果不想付费的话, 最佳使用方案就设置定时器, 每天 7 - 23 点每 20 分钟访问一次, 这样可以保持每天的绝大多数时间邮件服务是正常的.
但是, LeanCloud 本身有一个计划任务, 用这玩意搞搞就可以做到如上所示: 白天工作, 晚上休眠 6h.
步骤如下:
设置Web主机域名

如果你喜欢可以用 CNAME 解析到自己的域名上, 反正我是解析了一下
然后创建一个用户可以用来登录后台进行管理

注意 email 必填, 为 STMP_USER
设置的值, 否则无法登录后台. 官网说登录的时候用户名写这个, 而不是上面设置的用户名, 为了方便我写的都一样, 就没这破事了(还嫌事不够多是叭)
设置管理地址变量
和上面设置全局变量类似, 添加一个 ADMIN_URL
, 为之前设置的域名.
然后就可以访问这个域名登录管理系统了.
创建计划任务

名称随意, 任务选自唤醒(self-wake), Cron 表达式我这里写的是 0 */20 0-17 * * ?
, 即 0:00-17:59, 每 20min 进行一次任务. (服务器是UTC+0的)
没了
以后要是搞邮件模板什么的再来写叭, 先到这里, 反正是成功了! 有人评论会发邮件提醒我, 有人被回复还会同时发邮件提醒他(如果设置了邮箱的话).