WordPress自带有一系列的邮件通知功能,不过在VPS上搭建了LNMP后建立的WordPress,似乎自带的发送邮件的功能就失效。邮件提醒功能,可以让自己知道网站的一些情况,也可以促进文章与访客之间的交流,所以还是觉得挺重要的。
一、VPS系统及其环境
由于之前一直在VPS上都用的是CentOS,因此我现在依旧使用着自己相对熟悉点的CentOS,当然LNMP也是一样的,几年前就用LNMP了所以也还是用LNMP。
- CentOS7 ×64
- LNMP1.4
- WordPress 4.9
由于插件会影响到WordPress的性能,因而我不打算使用插件;其次我不是太喜欢写一堆密码到我的配置文件里所以我也放弃了SMTP,最终决定使用Linux上的Sendmail通过PHP的mail()函数来进行发邮件。
二、安装及配置Sendmail
最早我使用VPS和LNMP来搭建WordPress的时候,那个时候大概是CentOS5吧,我大约记得我仅仅是卸载了Sendmail然后安装最新版的Sendmail,并配置function函数即可实现发邮件。不过在CentOS7中,我依然按着原来的方式,不过貌似不是太起效。最终测试了好多次才成功。
1.卸载Sendmail。
yum -y remove sendmail
2.重新安装Sendmail。
yum install -y sendmail
yum install sendmail sendmail-cf m4
3.Vim打开php.ini,不习惯Vim的,可以通过SFTP下载到本地修改后覆盖上传。
vim /usr/local/php/etc/php.ini
sendmail_path = /usr/sbin/sendmail -t -i
#备份配置文件cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc2014.bak#配置网络服务权限,vi /etc/mail/sendmail.mc
#启动服务
service sendmail start#设置为开机启动
chkconfig sendmail on
#重启PHPservice php-fpm restart#重启VPSreboot
三、WordPress评论回复设置
果你的Sendmail配置没问题,那么接下来的问题就很简单了。至于你的Sendmail是否配置成功,最简单的办法就是去找回密码的地方找回密码试一试看看可以收到邮件不。还可以换个浏览器随便给文章评论一下,看看你的邮箱可以收到邮件不。我在网上找了一个模板,感觉还不错,虽然界面很熟悉( >﹏<。)~呜呜呜……
将以下代码复制到主题的function.php中即可~~
/*** WordPress 邮件评论回复通*/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)) . ‘”>.get_option</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);
你好,站长。 按照你的这个操作去设置了,但是网站上的表单依然显示 “THERE WAS AN ERROR TRYING TO SEND YOUR MESSAGE. PLEASE TRY AGAIN LATER.”
请问是还需要安装 “sudo apt-get install sendmail php-mail postfix” 这个程序吗? 相关文章参考的是https://ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=9746
希望能得到你的回复,谢谢。
我用的方法是用的是sendmail,如果你用sendmail的话就不用安装postfix啊,这个是另一套程序,不过相比之下postfix貌似比sendmail更好,我没用配置过。另外如果你尝试使用sendmail的话,建议你先不要用表单后或者找回密码的方式来判断配置是否成功,直接使用linux下的mail命令发邮件测试,很有可能会提示别的错误,在根据错误去排除问题,比如被判定为垃圾邮件服务器之类的。另外即使你配置成功后,sendmail有很多的问题,最主要是的就是邮件延迟(当然也可能是我配置不是那么完美),还会间歇性出问题,最后我也向插件妥协了,用的WP Mail SMTP插件使用SMTP发送邮件,效率很高,从来没处过问题。配置sendmail的时候我参考的文章是rankhsu.blogspot.com/2017/01/centos-7-sendmail.html
博主我试了,怎么提示这个啊……
因在wp-content/themes/wordstar/functions.php文件的27行有错误,您对PHP代码的修改已被回滚。请修复并重试。
syntax error, unexpected ‘的留言有了新的回复’’ (T_STRING)