评论邮件提醒的改进
昨天看到@启福 同学的博客写到关于邮件评论提醒的改进,一共做了两处改进,觉得挺不错,于是昨天下午就把代码给偷过来。代码主要是通过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.net]。
这里用到了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://itlu.net./articles/2432.html
发现你们一群人都在改邮件,这些天至少看了四五个了
看到一个人有动作,其他一窝蜂上
难道是因为我发了篇文章?
你发了什么文章呢?
我是因为看到了你的邮件!之前一直在想弄自动填写!最后留下没有技术的小白泪!
看来我的邮件提醒要跟进了,谢谢博主的好文
改进下在体验上是会有所提升的。
可cookie不好使的事儿还没解决呢。
这会应该是可以的,之前可能是写cookies时没有加一些参数,全部默认的。
实现起来代码很简单的,主要还是在不在乎这些小细节了。
对于这一类细节,我是会尽量优化。有时候是自己没想到这一点
代码盲的我就不做了~
不装还能多聊几句!!
众所周知,姜辰只会写写文章~
呃,我关于邮件的代码都是自己写的,插件都太不可靠。
这个插件还可以,只有smtp靠得住都没有什么问题。
溜了一眼,这算是把长内容的评论隐藏起来一部分让人点连接回来看全部呢,还是说点连接回来看评论会自动填写用户信息?
我没抓住重点。
评论没有隐藏,看了你的这个评论,发现是我提示文字那里有歧义,已经调整。本文的关键是后者。
代码盲的我就不做了~
都给我好好的装!
这个不错,有时间我也改改
还等什么,速度上。
邮件内容自动填充评论者信息这个比较有用,有时间我也折腾一下,不折腾不幸福!
这个确实会方便不少
我也是typecho,代码就直接偷走啦。
代码也是别人的,欢迎偷
你现在用的还是CommentToMail吗?好像出问题用不了吧。你的怎么还正常?
是的,好像我用的是有人更新过的版本