评论邮件提醒的改进

昨天看到@启福 同学的博客写到关于邮件评论提醒的改进,一共做了两处改进,觉得挺不错,于是昨天下午就把代码给偷过来。代码主要是通过JS来处理,所以偷起来难度不大。

启福同学用的是WP,而我的是Typecho,所以稍微有点差别。但JS代码是不变,就是在邮件发出读取接受者的昵称,邮箱,博客地址稍微有点差异。

我用的发信插件是CommentToMail,所以就需要对这个插件做一点调整,另外为了更好的兼容,在发信模版上加多一个被替换的东西上去。

废话少说,进入主题:

评论邮件提醒增加摘要

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

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

我的做法其实很简单,就是在发信模版增加一段内容在最前面,代码参考如下:

<span style="display: none !important; font-size:0; line-height:0">{text}</span>

这一句就是在HTML隐藏回复的内容,但网页上看不到,text是被替换的内容,根据实际情况修改即可。另外也删除原来最前面的一句废话,感觉现在也挺好的,直截了当。

评论邮件提醒的改进

邮件内容自动填充评论者信息

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

现在,你只要点击邮件里面的“查看回复的完整内容”链接,你的信息就会自动被填写。比如 “点击这个链接” 就会自动填写名字为[灰狼],邮箱为[qq@itlu.org],站点为[https://itlu.org]。

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

代码很简单:

var autoload_hash=window.location.hash;

if(autoload_hash.slice(0,9)=="#comment-" && autoload_hash.length>9){

autoload_array=autoload_hash.split("&");

if(autoload_array[1]=="auto"){

if(autoload_array[2]){$.cookie('author', decodeURIComponent(autoload_array[2]));}

if(autoload_array[3]){$.cookie('mail', decodeURIComponent(autoload_array[3]));}

if(autoload_array[4]){$.cookie('url', decodeURIComponent(autoload_array[4]));}

window.location.hash=autoload_array[0];

}

}

if(document.getElementById("commentform")){ReadCookie();}


这是我根据实际情况修改后的代码,阿福同学的代码如下:

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&名字&邮箱&站点”即可,站点可不加,注意内容进行编码转义

昨天下午收到的邮件,应该都可以点击链接后自动填充信息,若有其他问题,烦请反馈,感谢!

原文链接:https://qifu.me/at201703212126/

查看 mail Typecho commenttomail的相关文章

转载本站原创文章请注明:文章转自 挨踢路,链接: https://itlu.org/articles/2432.html

已有 25 条评论

  1. 回复小落小落

    发现你们一群人都在改邮件,这些天至少看了四五个了

    1. 看到一个人有动作,其他一窝蜂上

    2. 难道是因为我发了篇文章?

    3. 你发了什么文章呢?

  2. 看来我的邮件提醒要跟进了,谢谢博主的好文

    1. 改进下在体验上是会有所提升的。

  3. 可cookie不好使的事儿还没解决呢。

    1. 这会应该是可以的,之前可能是写cookies时没有加一些参数,全部默认的。

  4. 实现起来代码很简单的,主要还是在不在乎这些小细节了。

    1. 对于这一类细节,我是会尽量优化。有时候是自己没想到这一点

  5. 代码盲的我就不做了~

    1. 不装还能多聊几句!!

    2. 众所周知,姜辰只会写写文章~

  6. 呃,我关于邮件的代码都是自己写的,插件都太不可靠。

    1. 这个插件还可以,只有smtp靠得住都没有什么问题。

  7. 溜了一眼,这算是把长内容的评论隐藏起来一部分让人点连接回来看全部呢,还是说点连接回来看评论会自动填写用户信息?
    我没抓住重点。

    1. 评论没有隐藏,看了你的这个评论,发现是我提示文字那里有歧义,已经调整。本文的关键是后者。

  8. 代码盲的我就不做了~

    1. 都给我好好的装!

  9. 这个不错,有时间我也改改

    1. 还等什么,速度上。

  10. 邮件内容自动填充评论者信息这个比较有用,有时间我也折腾一下,不折腾不幸福!

    1. 这个确实会方便不少

  11. 我也是typecho,代码就直接偷走啦。

    1. 代码也是别人的,欢迎偷

添加新评论

您好,#请填信息#修改