大多數情況下,我們習慣使用 WordPress 自帶的評論系統,儘管它不是那麼地盡人意——畢竟,第三方的評論系統實在是讓人難以接受。
第三方比較優秀的多說實在是太噁心了;而國外的幾個不錯的評論系統又很不方便中國使用,總的來說,還是 WordPress 自帶的評論系統最好用了。
那麼,說起 WordPress 自帶的這個評論系統,可能郵件通知是它最大的特色了。雖然對外來說 WordPress 不會公開評論者的郵件地址,但是你絕不會想到會有人利用評論通知去擴散垃圾郵件吧!
後台 – 設置 – 討論,勾選”評論必須經人工批准”,這樣所有評論必須經過管理員審核才能顯示。
我只需要在任意的 WordPress 網站回複評論就可以啦!所以,我們有必要製止這種行為,最簡單的方法就是開啟評論審核之後才能通過而不是直接就通過。另外,我們還需要定制一下 WordPress 自帶的郵件通知函數,讓它更加智能——比如其他人評論別人的評論的時候,只有審核通過了才會發出郵件通知。
同樣的,我還是推薦你在子主題裡進行修改,這樣你的主題就可以隨意升級而避免自定義的內容被清除掉了:)
在你當前主題的 功能.PHP 裡追加如下內容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/** * WordPress评论回复邮件提醒防垃圾评论版 * 作者:露兜 * 博客:http://www.ludou.org/ * * 2014年7月5日 : * 首个版本 */ function ludou_comment_mail_notify($comment_id, $comment_status) { // 评论必须经过审核才会发送通知邮件 if ($comment_status !== 'approve' && $comment_status !== 1) return; $comment = get_comment($comment_id); if ($comment->comment_parent != '0') { $parent_comment = get_comment($comment->comment_parent); // 邮件接收者email $to = trim($parent_comment->comment_author_email); // 邮件标题 $subject = '您在[' . get_option("blogname") . ']的留言有了新的回复'; // 邮件内容,自行修改,支持HTML $message = ' <p>Hi, ' . $parent_comment->comment_author . '</p> <p>您之前在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />' . $parent_comment->comment_content . '</p> <p>' . $comment->comment_author . ' 给您回复:<br />' . $comment->comment_content . '<br /><br /></p> <p>您可以 <a href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '">点此查看回复完整內容</a></p> <p>欢迎再度光临 <a href="'.home_url().'">' . get_option('blogname') . '</a></p> <p>(此邮件由系统自动发送,请勿回复)</p>'; $message_headers = "Content-Type: text/html; charset=\"".get_option('blog_charset')."\"\n"; // 不用给不填email的评论者和管理员发提醒邮件 if($to != '' && $to != get_bloginfo('admin_email')) @wp_mail($to, $subject, $message, $message_headers); } } // 编辑和管理员的回复直接发送提醒邮件,因为编辑和管理员的评论不需要审核 add_action('comment_post', 'ludou_comment_mail_notify', 20, 2); // 普通访客发表的评论,等博主审核后再发送提醒邮件 add_action('wp_set_comment_status', 'ludou_comment_mail_notify', 20, 2); |
優化
好吧,既然我們已經改了默認的郵件通知函數,那為何不順便改的更徹底一些,讓它看起來更加賞心悅目一點呢?總之,我在網上隨便找到了一段美化代碼,當然,這個代碼比較舊無法正常運行,我參照著露兜博客的代碼進行了微小的修改,你可以拿去試試看:)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
/** * 修复 WordPress 邮件评论回复通知被恶意利用的问题 logcg.com 落格博客 */ function logcg_comment_mail_notify($comment_id, $comment_status) { // 评论必须经过审核才会发送通知邮件 if ($comment_status !== 'approve' && $comment_status !== 1) return; $comment = get_comment($comment_id); if ($comment->comment_parent != '0') { $parent_comment = get_comment($comment->comment_parent); // 邮件接收者email $to = trim($parent_comment->comment_author_email); // 邮件标题 $subject = '您在[' . get_option("blogname") . ']的留言有了新的回复'; // 邮件内容,自行修改,支持HTML $message = ' <div style="background-color:#fff; border:1px solid #666666; color:#111; -moz-border-radius:8px; -webkit-border-radius:8px; -khtml-border-radius:8px; border-radius:8px; font-size:12px; width:702px; margin:0 auto; margin-top:10px; font-family:苹方,微软雅黑, Arial;"> <div style="background:#666666; width:100%; height:60px; color:white; -moz-border-radius:6px 6px 0 0; -webkit-border-radius:6px 6px 0 0; -khtml-border-radius:6px 6px 0 0; border-radius:6px 6px 0 0; "> <span style="height:60px; line-height:60px; margin-left:30px; font-size:12px;"> 您在 <a style="text-decoration:none; color:#00bbff;font-weight:600;" href="' . get_option('home') . '">' . get_option('blogname') . ' </a> 的留言有了新回复!</span></div> <div style="width:90%; margin:0 auto"> <p>' . $parent_comment->comment_author . ',您好!</p> <p>您曾在 [' . get_option("blogname") . '] 的文章 《' . get_the_title($comment->comment_post_ID) . '》 上发表评论: <p style="background-color: #EEE;border: 1px solid #DDD; padding: 20px;margin: 15px 0;">' . nl2br($parent_comment->comment_content) . '</p> <p>' . trim($comment->comment_author) . ' 给您的回复如下: <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px; margin: 15px 0;">' . nl2br($comment->comment_content) . '</p> <p>您也可移步 <a style="text-decoration:none; color:#00bbff" href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '">落格博客</a> 以查看回复的完整內容。</p> <p>欢迎再次光临 <a style="text-decoration:none; color:#00bbff" href="' . get_option('home') . '">' . get_option('blogname') . '</a></p> <p>(此邮件由系统自动发出, 请勿回复。)</p> </div> </div>'; $message_headers = "Content-Type: text/html; charset=\"".get_option('blog_charset')."\"\n"; // 不用给不填email的评论者和管理员发提醒邮件 if($to != '' && $to != get_bloginfo('admin_email')) @wp_mail($to, $subject, $message, $message_headers); } } // 编辑和管理员的回复直接发送提醒邮件,因为编辑和管理员的评论不需要审核 add_action('comment_post', 'logcg_comment_mail_notify', 20, 2); // 普通访客发表的评论,等博主审核后再发送提醒邮件 add_action('wp_set_comment_status', 'logcg_comment_mail_notify', 20, 2); |
效果
最後,我們來看看效果:
本文由 落格博客 原創撰寫:落格博客 » WordPress 評論回复郵件通知 優化
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1638.html
不錯,用著了
狼,簡約大氣的博客主題。。使用插件wp SMTP 部署郵件發送,一般的主題還是都優化了郵件發送界面的
支持mail()函數情況下還是收不到郵件
嘗試用第三方的郵件服務,SMTP,如果你的服務器不支持發郵件,你就無論如何都發不出去,需要給服務商發工單尋求進一步支持。
開啟郵件通知後,感覺發評論有點慢。
QQ企業郵箱,發不出信呀。
STMP插件單獨測試的時候是可以發送成功的。
開啟加密ssl?
666
用上了,感謝!
我給改了下主題….暗色調不喜歡n
/**
* 修復 WordPress 郵件評論回复通知被惡意利用的問題 logcg.com 落格博客
* 二次修改 mikifuns blog.mikifuns.com
*/
功能logcg_comment_mail_notify($COMMENT_ID, $comment_status) {
// 評論必須經過審核才會發送通知郵件
如果 ($comment_status !=='批准’ && $comment_status !== 1)
返回;
$註釋= get_comment($COMMENT_ID);
如果 ($評論->comment_parent != ‘0“) {
$parent_comment = get_comment($評論->comment_parent);
// 郵件接收者email
$要修剪=($parent_comment->comment_author_email);
// 郵件標題
$subject = ‘您在[‘ . get_option(“博客名稱”) . “]的留言有了新的回复’;
// 郵件內容,自行修改,支持HTML
$消息= ‘
您在 ‘ . get_option(“BLOGNAME”) . ‘ 的留言有了新回复!
‘ . $parent_comment->COMMENT_AUTHOR . “,您好!
您曾在 [‘ . get_option(“博客名稱”) . “] 的文章
“’ . get_the_title($評論->comment_post_ID) . ‘》 上發表評論:
‘ . nl2br($parent_comment->COMMENT_CONTENT) . ‘
‘ . trim($評論->COMMENT_AUTHOR) . ‘ 給您的回復如下:
‘ . nl2br($評論->COMMENT_CONTENT) . ‘
comment_parent)) . “” 目標=”_自” 風格=”文字修飾: 沒有;”> 點擊查看
歡迎再次光臨 ‘ . get_option(“BLOGNAME”) . ‘
(此郵件由系統自動發出, 請勿直接回复。)
miki.acg
“;
$message_headers = “內容類型: text / html的; charset=\””.get_option(“blog_charset”).”\”\ñ”;
// 不用給不填email的評論者和管理員發提醒郵件
如果($至 != ” && $至 != get_bloginfo(“ADMIN_EMAIL”))
@wp_mail($至, $學科, $信息, $message_headers);
}
}
// 編輯和管理員的回复直接發送提醒郵件,因為編輯和管理員的評論不需要審核
ADD_ACTION(“comment_post”, “logcg_comment_mail_notify”, 20, 2);
// 普通訪客發表的評論,等博主審核後再發送提醒郵件
ADD_ACTION(“wp_set_comment_status”, “logcg_comment_mail_notify”, 20, 2);
我用騰訊企業郵箱和GMail的SMTP發送郵件都是登陸失敗的log,自帶主機商的郵件系統直接被騰訊放垃圾箱,gmail直接退信了。。。。
你需要開啟ssl加密,端口也要改成加密的465好像,我沒記嘿嘿,如果是gmail的話記得使用一次性密碼,或者不開啟兩步驗證。還有就是發件郵箱不能亂填,必須和你的賬號一致才行。
等下去玩玩,你的倒是工作正常了,昨天我自己玩了好久都是登錄失敗
對了,你用的什麼郵箱呢
我這個代發郵件的郵箱是QQ郵箱的域名郵箱,我自己有gmail,現在統統轉發hotmail了——因為這個目前還沒有被牆:)
哈哈,第三方郵箱這個我有調試經驗的,因為曾在另外一個網站搗鼓了好久的。
我也通過騰訊企業郵試過同樣的錯誤,2016-03-29 13:58:05 服務器 - > 客戶: 221 再見
2016-03-29 13:58:05 連接: 關閉
2016-03-29 13:58:05 SMTP錯誤: 無法驗證.
從電子郵件
驗證處要手動點選ssl驗證方式,默認不是。
換了個插件終於GMAIL能收啊啊啊啊啊,謝了,明天加上自動回复
給個贊,這界面很好看,等會我也拿回去用?