经过一段时间的折腾多说,博主发现原来多说是不支持主动评论提醒的。也就是说如果在一篇博客中有人主动评论留言的话,多说是不会邮件通知的。除非他回复了你,那么多说才会邮件通知。(怪不得博主觉得一会儿有邮件提醒一会儿没有咋个这么奇怪。。)
去多说的官方一番折腾,找到了官方文档,有说到使用data-author-key
可以设置主动邮件提醒,以下给出多说官网说明的传送门:
通过上面的链接查看多说的API说明,不难看要想实现评论主动邮件通知,只需要:
- 自定义同步一个用户到多说的服务器。
- 将这个同步的用户在站点中的身份设置为作者。
- 取得自定义用户在站点中的ID。
- 将这个ID作为
data-author-key
的值加在站点的多说评论框中即可。
实现上述操作之后,当其他用户评论带有data-author-key
标示的文章时,多说服务器会默认为在向我们自定义的作者用户评论,便会向我们自定义用户的邮箱发送邮件提醒啦~
分析了原理之后,我们具体应该怎么做呢?
很简单,只需要向多说提供的同步用户接口发个POST就行了。语言不限,不过既然我们用的是Hexo,那就以NodeJS为例吧:
- 随便在哪个地方新建一个文件夹(就是这么随意~)
- 进入该文件夹,执行以下命令:
1 | npm install --save-dev request |
- 新建一个
adduser.js
文件,将下面的代码粘贴进去,并修改data
中的数据:
1 | var http = require('request'); |
将上面的代码中data中的数据按照自己的多说账户设置好之后,执行以下命令完成数据同步到多说服务器:1
node adduser.js
- 如果输出为
Post data to Duoshuo fail
,那么检察一下data数据是否修改正确,或者直接给我留言排查问题。 - 如果输出为
Post data to Duoshuo success
,那么就可以登录到多说的后台,在用户那里看到新添加的用户了,类似这样:
如果角色不是作者的话,手动更改为作者。然后我们找到NexT
主题的layout/_layout.swig
文件,打开并找到这段代码:
1 | {% if page.comments %} |
将其修改为:1
2
3
4
5
6{% if page.comments %}
<div class="comments" id="comments">
{% if (config.duoshuo and config.duoshuo.shortname) or config.duoshuo_shortname %}
<div class="ds-thread" data-thread-key="{{ page.path }}"
data-title="{{ page.title }}" data-url="{{ page.permalink }}" data-author-key="{{ theme.duoshuo_info.data_author_key }}">
</div>
然后在主题的配置文件_config.yml
文件中增加以下一行配置:1
2duoshuo_info:
data_author_key: 1 #此处填写上面js脚本中的data变量中的users[0][user_key]的值,因为上面为1,这里我就填写为1了。
当然你可以也可直接写死为1,像这个样子:1
2
3
4
5
6{% if page.comments %}
<div class="comments" id="comments">
{% if (config.duoshuo and config.duoshuo.shortname) or config.duoshuo_shortname %}
<div class="ds-thread" data-thread-key="{{ page.path }}"
data-title="{{ page.title }}" data-url="{{ page.permalink }}" data-author-key="1">
</div>
然后重新博客文件并发布,这样在就可以当其他人评论你的博客的时候主动发邮件通知啦~像这个样子的:
像这样子,就让我们的NexT
支持多说主动评论邮件通知啦,感谢@arao的友情出镜~
PS:这种邮件提醒不是实时提醒,而是每天一封汇总邮件。如果你中途查看了这个评论的话,也是不会邮件提醒的~