其实实现免插件实现评论(评论回复)邮件通知也就相当于“免SMTP设置插件+免评论邮件通知插件”的组合。

很多人或许只是免去了其中一个插件而另一个插件还在使用,既然插件越少越好,两者又都能同时免了,何乐而不为。其实这篇文章也是看了languh的《用简单代码实现在wordpress上配置QQ企业邮箱\谷歌域名邮箱的SMTP邮件服务器》才来的,权当是做个补充吧。

1.免SMTP设置插件。
修改\wp-includes\pluggable.php文件

搜索(第405行):$phpmailer->IsMail();

替换为:$phpmailer->IsSMTP();


找到以下并修改:

第319行 if ( !isset( $from_name ) )
第320行 $from_name = '你的用户名';//修改默认用户名
第336行 $from_email = '你的邮件地址' . $sitename;//修改默认邮箱地址


然后修改\wp-includes\class-phpmailer.php文件

第150行 public $Mailer = 'smtp';
第198行 public $Host = '此处填你的SMTP服务器地址'; //邮箱的SMTP服务器地址
第204行 public $Port = 25; //SMTP邮件发送端口
第217行 public $SMTPSecure = '';
第223行 public $SMTPAuth = true; //启用SMTPAuth服务
第229行 public $Username = '此处填写你的邮件地址';//你的邮箱地址
第235行 public $Password = '******';//你的邮箱登陆密码


或者你也可以直接修改主题文件functions.php,添加下面的代码在<?php 和 ?>之间

//使用smtp发邮件
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp( $phpmailer ) {
$phpmailer->IsSMTP();
$phpmailer->SMTPAuth = true;//启用SMTPAuth服务
$phpmailer->Port = 25;//MTP邮件发送端口
$phpmailer->SMTPSecure = "";
$phpmailer->Host = "此处填写你的SMTP服务器地址";//邮箱的SMTP服务器地址
$phpmailer->Username = "你的邮箱";//你的邮箱地址
$phpmailer->Password = "******";//你的邮箱登陆密码
}


这两种方法其实都一样,如果用了第二种不行的话那么就换第一种。
2.免评论邮件通知插件。
因为主题不同的原因,有的主题functions.php文件会自带有下面的代码或类似代码,总之就是设置评论邮件通知的代码,如果你的主题文件functions.php中已经存在则不需要进行这步了,如果没有的话可以添加下面的代码在<?php 和 ?>之间

//评论邮件通知
function comment_mail_notify($comment_id) {
$admin_email = get_bloginfo ('admin_email'); // $admin_email
$comment = get_comment($comment_id);
$comment_author_email = trim($comment->comment_author_email);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
$to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : '';
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam') && ($to != $admin_email) && ($comment_author_email == $admin_email)) {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
$subject = '您在 [' . get_option("blogname") . '] 的评论有新的回复';
$message = '
<div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px; border-radius:5px;">
<p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
<p>您曾在 [' . get_option("blogname") . '] 的文章 《' . get_the_title($comment->comment_post_ID) . '》 上发表评论:<br />'
. nl2br(get_comment($parent_id)->comment_content) . '</p>
<p>' . trim($comment->comment_author) . ' 给您的回复如下:<br />'
. nl2br($comment->comment_content) . '<br /></p>
<p>您可以点击 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回复的完整內容</a></p>
<p>欢迎再次光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p>(此邮件由系统自动发出,请勿回复.)</p>
</div>';
$message = convert_smilies($message);
$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
wp_mail( $to, $subject, $message, $headers );
//echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
}
}
add_action('comment_post', 'comment_mail_notify');
//全部设置结束


如果你使用gmail作为SMTP邮箱的话,因为gmail必须使用SSL所以设置SMTP那块的方法看下languh的原文,其他邮箱的话不建议使用SSL,因为测试了下其他邮箱使用SSL会收不到邮件。


最后修改:2019 年 06 月 06 日
如果觉得我的文章对你有用,请随意赞赏