邮件评论提醒的两处改进

对邮件评论提醒进行了两处改进:
1. 设置邮件摘要内容为回复内容
2. 通过邮件内附的链接访问本站会自动填写评论者信息

目前还没发现其他人考虑过这两个问题。

首先,目前在各种邮箱列表视图下,都可以显示发件人、主题、摘要,摘要就是邮件内容的预览,但是我们看到的往往是邮件的前几句话,而前几句话通常是客套的、无实际信息的,比如“你在xxx的评论有了回复”,无论你收到多少个不同的提醒,邮件摘要永远只显示这句话,那还有什么意义?

所以,我设置了邮件摘要为评论回复内容,这样当你收到提醒时,主题里可以看到谁回复的你,摘要直接就是他回复的内容,岂不方便?

我是使用了sendcloud的contentSummary字段添加的摘要内容,你也可以在邮件内容的顶部添加摘要内容,并设置css为不可见。

然后,如果你是个新读者,用电脑在我的博客填写了评论,然后你在手机上收到了我回复你的提醒邮件,你想再次回复我,就要在手机上重新填写一遍你的名字、邮箱、站点,虽然下次就会记住这些信息了,是不是依然很麻烦?

现在,你只要点击邮件里面的“查看详情”链接,你的信息就会自动被填写。比如 “点击这个链接” 就会自动填写名字为name,邮箱为mail@qifu.me,站点为https://qifu.me。

这里用到了hash(也就是url后面的#)传递一些参数,js读取后自动填写,不用“?”的原因是因为浏览器向服务器请求url时,不会携带“#”及其后面的内容,服务器端不会因为收到了额外的参数而产生多余的计算消耗资源,也不会影响静态缓存。

代码很简单(更新于2017-03-22,之前用的startsWith在IE下不兼容):

var cmt_hash=window.location.hash;
if(cmt_hash.slice(0,18)=="#comment-autofill&" && cmt_hash.length>18){
  cmt_array=cmt_hash.split("&");
  if(cmt_array[1]){设置名字为decodeURIComponent(cmt_array[1])的代码}
  if(cmt_array[2]){设置邮箱为decodeURIComponent(cmt_array[2])的代码}
  if(cmt_array[3]){设置站点为decodeURIComponent(cmt_array[3])的代码}
  window.location.hash='#comments';
  //此行可选,为空则自动填充以后删除url后面的#(无刷新),设为“#comments”则自动跳转至评论区
}
//然后在需要的url后面添加“#comment-autofill&名字&邮箱&站点”即可,站点可不加,注意内容进行编码转义

欢迎测试,并提供反馈。

随便看看

本文共有84条评论

你好,哪位? 填写