NexT主题设置Valine评论系统邮件提醒

前言

今天无意间看到很久之前写的一篇文章有新的评论,而评论时间呢也是10天以前的。这就有点伤了啊,别人兴致冲冲地提了疑惑,而我却10天后才看到。经过这一茬,意识到评论提醒功能的重要性。由于我使用的是hexo+NexT主题+Valine评论系统,自然而然地就去Valine官网看了看,没想到还真有提醒的功能「邮件提醒」。

这里就给大家讲讲Valine中如何配置邮件提醒功能。

Valine邮件提醒

Valine评论功能是基于Leancloud的,Valine评论功能还不能跑起来的可以看看我之前写的文章《Hexo使用NexT主题及配置》,其中就有详细的使用说明,这里就不展开了。

Valine官方提供的邮件提醒功能是基于Leancloud的密码重置邮件提醒,操作步骤如下:

进入Leancloud>选择你的评论所存放的应用>设置>邮件模板,按下图设置好用于重置密码的邮件主题>然后保存:

Valine_邮件提醒

  1. 修改邮件主题:你在 的评论收到了新的评论

  2. 修改内容:将下面的代码复制到“内容”中,并将其中的你的网址首页链接改为你的网址首页链接。

    1
    2
    3
    4
    5
    <p>Hi, {{username}}</p>
    <p>
    你在 {{appname}} 的评论收到了新的回复,请点击查看:
    </p>
    <p><a href="你的网址首页链接" style="display: inline-block; padding: 10px 20px; border-radius: 4px; background-color: #3090e4; color: #fff; text-decoration: none;">马上查看</a></p>
  3. 点击“保存”按钮

  4. 修改NexT主题配置文件,搜索valine(快速定位),将其中的notify改为true

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Valine.
    # You can get your appid and appkey from https://leancloud.cn
    # more info please open https://valine.js.org
    valine:
    enable: true
    appid: gaKW5SWAvf7NBolU9wFbxN8O-gzGxoHsz
    appkey: susRJyHS8Fq1SyKXg0r9ad65
    notify: true # mail notifier , https://github.com/xCss/Valine/wiki
    verify: false # Verification code
    placeholder: 您的评论可以一针见血 (*^ω^*)~~ # comment box placeholder
    avatar: mm # gravatar style
    guest_info: nick,mail,link # custom comment header
    pageSize: 10 # pagination size

注意事项

  • 发送次数过多,可能会暂时被Leancloud 屏蔽邮件发送功能
  • 由于邮件提醒功能使用的Leancloud的密码重置邮件提醒,只能传递昵称邮箱两个属性,所以邮件提醒链接无法直达指定文章页请悉知
  • 开启邮件提醒会默认开启验证码选项。
  • 该功能目前还在测试阶段,谨慎使用。

  • 目前邮件提醒正处于测试阶段,仅在子级对存在邮件地址的父级发表评论时发送邮件

第三方支持

这里重点讲一下第三方邮件提醒Valine-Admin (by @zhaojun1998)

这也先需要将Valine的评论功能成功跑起来。

然后进入 Leancloud 对应的 Valine 应用中。

  1. 点击 云引擎 -> 设置 填写代码库并保存:https://github.com/zhaojun1998/Valine-Admin

  1. 切换到部署标签页,分支使用 master,点击部署即可:

  2. 设置云引擎的环境变量

    必选参数

    • SITE_NAME : 网站名称。
    • SITE_URL : 网站地址, 最后不要加 /
    • SMTP_USER : SMTP 服务用户名,一般为邮箱地址。
    • SMTP_PASS : SMTP 密码,一般为授权码,而不是邮箱的登陆密码,请自行查询对应邮件服务商的获取方式
    • SMTP_SERVICE : 邮件服务提供商,支持 QQ163126Gmail"Yahoo"...... ,全部支持请参考 : Nodemailer Supported services。 — 如这里没有你使用的邮件提供商,请查看自定义邮件服务器
    • SENDER_NAME : 寄件人名称。

    由于我使用的是我自己的企业邮箱,所以这边的SMTP_SERVICE就不适用了,需要用这三个参数替换:SMTP_HOSTSMTP_PORTSMTP_SECURE

    详细说明如下:

    • SMTP_HOST : 邮件服务提供商 SMTP 地址,如 qq : smtp.qq.com此项需要自行查询或询问其服务商
    • SMTP_PORT : 邮件服务提供商 SMTP 端口, 此项需要自行查询或询问其服务商
    • SMTP_SECURE : 是否启用加密, 默认为 true,一般不需要设置,如有特殊请自行配置。 此项需要自行查询或询问其服务商

    如果也同我一样使用阿里云企业邮箱,SMTP_HOSTSMTP_PORTSMTP_SECURE可以照我的写。

    可以看到上图中,我的自定义环境变量还多了2个,分别是:

    • TO_EMAIL:这个是填收邮件提醒的邮箱地址,若没有这个字段,则将邮件发到SMTP_USER
    • TEMPLATE_NAME:设置提醒邮件的主题,目前内置了两款主题,分别为 defaultrainbow。默认为 default

    Web 评论管理

    此项目还为 Valine 提供了更方便的评论管理功能,可以在 web 端对评论进行查看与删除操作。配置方式如下。

    Web 主机域名

    后台登录需要账号密码,需要在这里设置,只需要填写 emailpasswordusername,这三个字段即可, 使用 email 作为账号登陆即可。(为了安全考虑,此 email 必须为配置中的 SMTP_USERTO_EMAIL, 否则不允许登录)
    添加登录账号

    Web 后台目前仅有 查看删除 功能

    LeanCloud 休眠策略

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

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

    分析了一下上方的策略,如果不想付费的话,最佳使用方案就设置定时器,每天 7 - 23 点每 20 分钟访问一次,这样可以保持每天的绝大多数时间邮件服务是正常的。

    Linux crontab 定时器代码:

    1
    */20 7-23 * * * curl https://你配置的域名前缀.leanapp.cn

    注 : 此 crontab 不是 LeanCloud 后台的定时任务,如果你没有 Linux 服务器来配置此定时器,那么可以在此 issues 中回复zhaojun1998,让他帮你加上。

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

重启容器

重启容器

坚持原创技术分享,您的支持是对我最大的鼓励!