WordPress 评论回复通知邮件优化

很久之前看到 kn007 文章 [Postfix进阶]利用Fail2ban防止爆破和攻击 提到邮件提醒同时包含 text/plain 与 text/html 两个版本,因此能获得满分。

2020-07-07 新版本:https://cyhour.com/1382

值得一提的是,目前 WordPress 评论回复通知邮件提醒同时包含 text/plain 与 text/html 两个版本,这使得 HTML 版本的邮件也能获得满分。并且全新的邮件风格,具有不错的兼容性(响应式)。

那时候就蠢蠢欲动想折腾,无奈用的虚拟主机 ip 已在垃圾邮件黑名单,加上没有现成的代码,又不好意思伸手要,就放下了。

九月底把博客搬到廉价的 Bandwagon Host KVM VPS,用上 Postfix,又忍不住要折腾。几经周折,用 davidnknight 的 send_email.php 代码勉强折腾得差不多,不过邮件评分只有 7.2。

只好厚着脸皮找 kn007 要方法,前几天在他博客新文章看到提供单封邮件双版本思路和方法作者:LWL。在他博客找到了双版本邮件实现代码:记弃用多说牵扯出来的一堆坑

不过文章贴的代码有点小坑,我是在 LWL Hermit X - 全新 WordPress 播放器插件代码(发送更新通知)里找到了实例。

//Hook phpmailer init action, then force change message_type to alt.
global $phpmailer;
add_action('phpmailer_init', function (&$phpmailer) use ($message_html, $message_plain){
$phpmailer->isHTML(true);
$phpmailer->Body = $message_html;
$phpmailer->AltBody = $message_plain;
$phpmailer->CharSet = 'utf-8';
$phpmailer->Encoding = 'base64';
$phpmailer->MessageID = '<' . md5($message_plain.microtime().uniqid()).'@hermit.x.update>';
});

把代码集成到原本评论回复通知邮件代码中,双版本邮件是实现了,不过并不能满分,说是 html 代码百分比不达标,扣分。言下之意是 html 版本邮件不能太简洁?

于是扒了 kn007 的邮件模板测试,mail-tester 妥妥的打了十分。

下面是老杨目前在用的 WordPress 评论回复邮件通知完整代码:

add_action('comment_post','comment_mail_notify');
add_action('comment_unapproved_to_approved', 'comment_mail_notify');//未通过审核的评论,审核后再通知评论者

function comment_mail_notify($comment_id) {
$comment = get_comment($comment_id);
$content=$comment->comment_content;

$match_count=preg_match_all('/<a href="#comment-([0-9]+)?" rel="nofollow">/si',$content,$matchs);
if($match_count>0){
foreach($matchs[1] as $parent_id){
comment_mail_notify_sendmail($parent_id,$comment);
}
}elseif($comment->comment_parent!='0'){
$parent_id=$comment->comment_parent;
comment_mail_notify_sendmail($parent_id,$comment);
}else return;
}

function comment_mail_notify_sendmail($parent_id,$comment){
$author_email=$comment->comment_author_email;//评论人邮箱
$to = trim(get_comment($parent_id)->comment_author_email);//被回复人邮箱
$spam_confirmed = $comment->comment_approved;
if ( ! ( ($spam_confirmed == '1') && ( $to != $author_email ) && ( get_bloginfo ('admin_email') != $to ) ) ) return;
$wp_email = 'noreply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
$subject = '您在『' . get_option("blogname") . '』的评论有新回复';
$message_html = '<!DOCTYPE html><html style="font-size:100%;margin:0;padding:0"><meta name="viewport" content="width=device-width"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>您在『' . get_option("blogname") . '』的评论有新回复</title><style type="text/css">.wp-smiley{width:23px!important;height:auto!important;max-height:none!important;margin-right:5px;}</style><div bgcolor="#FFF" style="clear:both!important;display:block!important;max-width:600px!important;margin:0 auto;padding:16px;border-width:0;box-shadow:0 1px 2px rgba(9,2,1,.1),0 0 10px rgba(0,0,0,.06)"><h1 style="font-weight:400;font-size:1.35em;color:#333;margin:0 0 10px;padding-bottom:10px;border-bottom:1px solid rgba(0,0,0,.08)"><a style="text-decoration:none;color:#333" href="'.get_option('home').'" target="_blank">'.get_option("blogname").'</a></h1><p style="font-size:14px;color:#354450;font-weight:400;margin:20px 0 0;padding:0">'.trim(get_comment($parent_id)->comment_author).',您好!您在文章《'.get_the_title($comment->comment_post_ID).'》发表的评论:</p><p style="background-color:#EFEFEF;padding:15px;margin:10px 0;font-size:14px;color:#354450;line-height:1.6em;font-weight:normal">'.nl2br(get_comment($parent_id)->comment_content).'</p><p style="font-size:14px;color:#354450;font-weight:400;margin:20px 0 0;padding:0">'.trim($comment->comment_author).'给您回复如下:</p><p style="background-color:#EFEFEF;padding:15px;margin:10px 0;font-size:14px;color:#354450;line-height:1.6em;font-weight:normal">'.nl2br($comment->comment_content).'</p><p style="font-size:14px;color:#354450;line-height:1.6em;font-weight:400;margin:20px 0;padding:0">您可以点击 <a style="text-decoration:none;color:#5692BC" href="'.htmlspecialchars(get_comment_link($parent_id,array("type" => "all"))).'" target="_blank">查看完整回复</a>,也欢迎您再次光临 <a style="text-decoration:none;color:#5692BC" href="'. get_option("home").'" target="_blank">'.get_option("blogname").'</a>。祝您天天开心!</p><p style="color:#999;font-size:12px;font-weight:400;margin:0;padding:10px 0 0;border-top:1px solid rgba(0,0,0,.08)">本邮件由博客评论系统自动发出,意在新评论通知。请勿直接回复,谢谢。</p></div>';
$message_plain = '您在『' . get_option("blogname") . '』的评论有新回复'."\r\n\r\n".trim(get_comment($parent_id)->comment_author).',您好!您在文章《'.get_the_title($comment->comment_post_ID).'》发表的评论:'."\r\n".nl2br(strip_tags(get_comment($parent_id)->comment_content))."\r\n\r\n".trim($comment->comment_author).'给您回复如下:'."\r\n".nl2br(strip_tags($comment->comment_content))."\r\n\r\n".'您可以通过下面链接查看完整回复,也欢迎再次光临'.get_option("blogname").'。祝您天天开心!'."\r\n".htmlspecialchars(get_comment_link($parent_id,array("type" => "all")))."\r\n\r\n".'本邮件由博客评论系统自动发出,意在新评论通知。请勿直接回复,谢谢。';
$message_html = str_replace("*uniqueID*", substr(md5(uniqid() . microtime()), 0, 5), convert_smilies($message_html));
global $phpmailer;
add_action('phpmailer_init', function (&$phpmailer) use ($message_html, $message_plain){
$phpmailer->isHTML(true);
$phpmailer->Body = $message_html;
$phpmailer->AltBody = $message_plain;
$phpmailer->CharSet = 'utf-8';
$phpmailer->Encoding = 'base64';
$phpmailer->MessageID = '<' . md5($message_plain.microtime().uniqid()).'@'.preg_replace("/^www\./", "", parse_url(esc_url( home_url('/') ), PHP_URL_HOST)).'>';
});
$headers = "From: ".get_option('blogname')." <".$wp_email.">" . "\n";
wp_mail($to, $subject, $message_html,$headers);
}

注意:可能需要根据实际主题代码进行修改才能正常使用。

不过,测试十分又怎样?该进垃圾邮件的还是会进,折腾罢了。

感谢 kn007 & LWL 两位博主。

除非注明,沙唐桔文章均为原创,本文地址 https://cyhour.com/574/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🔞:Netflix 奈飞 YouTube 合租免费节点Telegram 频道

优化 WordPress 评论回复通知邮件

用上 G Suite 后,域名邮箱自然也托管到 Google,Gmail 配合 Gmail SMTP 插件使用,还行。更改后回复评论提交速度巨慢,肯定与这个评论回复通知邮件有关。 原本使用 VPS Postfix 直接发送,虽然基本上会进垃圾邮件,但是回复评论提交速度很快。再次尝试使用 wp_schedule_single_event 延迟发送评论…

使用 rclone 将 Google Drive 文件同步至 OneDrive

前几天上了博友「灵尘居」的 Office 365 车,1T OneDrive 到手,手机照片一直喂 Google AI,挺方便的,以前还会同步一份到家里的垃圾西数 NAS,不过并不太自动,后来就懒得弄了。 Google 虽然是大厂,但是数据只有一份,还是怕怕,多一个备份不是坏事。苹果 iCloud 不错,但是贼贵,况且我只有一个…
浏览: 82 标签:  ,  , 

尼康 D7100 中文使用说明书 高清 PDF 电子版免费下载

尼康 D7100 说明书是一份介绍详细尼康 D7100 单反官方教程,推荐购买了 D7100 单反博友下载保存参考,以便随时查看一些常用按键操作和使用技巧。 尼康 D7100 简介 尼康 D7100 搭载先进的对象捕捉性能和成像性能,能够忠实还原拍摄细节。高密度的 51 点自动对焦系统准确捕捉目标对象并进行跟踪,…

全网热门公共 BitTorrent Tracker 列表合集 加速BT下载

BT 下载速度取决于其他下载同一资源的用户上传速度。做种「指上传文件数据给其他 BT 用户的行为」用户越多,你的下载速度越快!如果资源没人提供上传,就会完全没有下载速度,而做种用户靠 Peer、DHT、Tracker 获得。 Tracker 是什么? BT 下载的文件都是其他用户上传给你的。 BT 下载速度…
浏览: 31 标签:  ,  , 

Comments:29

  1. 常阳大佬和007大佬的WP阵营~

    2017.11.05 21:29 # 回复
    1楼
  2. 好文,收了

    2017.11.05 22:15 # 回复
    2楼
  3. 看不懂啊 看不懂 ……

    2017.11.05 22:48 # 回复
    3楼
  4. 懒得折腾了 凑合着用吧

    2017.11.05 23:25 # 回复
    4楼
  5. 恭喜下。
    不过这扒皮,希望不会太多人撞衫到时。。。我是根据seven定制的,比较简洁。
    感觉我的邮件模版,主题模版被扒了很多。

    2017.11.06 07:19 # 回复
    5楼
  6. 沙唐桔-Klose
    Klose

    只要添加上面的代码就可以用了吗?

    2017.11.06 08:38 # 回复
    6楼
  7. 感谢分享

    2017.11.06 09:22 # 回复
    7楼

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息