wordpress中集成PHPMalier给评论用户发送邮件提醒

首先你得去下载PHPMalier

 注:PHPMailer需PHP的socket扩展支持。如果PHPMailer连接邮箱需要ssl加密方式的话,php还得openssl的支持,可以查看phpinfo,如下两项均存在则可以使用。

PHP环境下,是提供了发送邮件的函数mail()的,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继的邮件发送服务器,但现在要找到一台不需要身份验证的邮件发送中继几乎不可能,所以使用mail函数往往无法成功发送电子邮件。那么php就无法发送邮件了么?答案是否定的,自己如果熟悉POP3/SMTP协议,结合socket功能就可以编写高效稳定的邮件发送程序,但这种变通方法相当于使用php编写了一个POP3/SMTP客户端了,对一般用户来说尚有难度。
好在互联网上的资源非常多,于是PHPMailer映入眼帘。

PHPMailer的优点

可运行在任何平台之上
支持SMTP验证
发送邮时指定多个收件人,抄送地址,暗送地址和回复地址;注:添加抄送、暗送仅win平台下smtp方式支持
支持多种邮件编码包括:8bit,base64,binary和quoted-printable
支持冗余SMTP服务器,即可以指定主smtp服务器地址也只可以指定备份smtp服务器
支持带附件的邮件,可以为邮件添加任意格式的附件---当然得你的服务器有足够大的带宽支撑
自定义邮件头信息,这跟php中通过header函数发送头信息类似
支持将邮件正文制作成HTMl内容,那么就可以在邮件正文中插入图片
灵活的debug支持
经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等

下载下来的PHPMailer解压后进行瘦身,仅需要class.phpmailer.php、class.pop3.php、class.smtp.php以及PHPMailerAutoload.php四个文件,language文件夹可要可不要,那个主要用于debug调试时的显示信息。看下class.phpmailer.php的文件大小,110kb多,挺吓人的。

如果你使用的smtp是ssl连接的话,请参考:《使用PHPMailer 中的报错解决 "Connection failed. Error #2: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:"

在自己主题下的function.php文件中添加以下代码:

require_once (TEMPLATEPATH.'/PHPMailer/PHPMailerAutoload.php'); 

function wp_comment_mail_notify($comment_id)
{
$ishtml = true;
$comment = get_comment($comment_id);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam')) {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = '你在 ' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) .' 的留言有了新回复';
$message = '
<div style="background: #F1F1F1;width: 100%;padding: 50px 0;">
<div style="background: #FFF;width: 750px;margin: 0 auto;">
<div style="padding: 10px 60px;background: #50A5E6;color: #FFF;font-size: 24px; font-weight: bold;"><a href="' . get_option('home') . '" style="text-decoration: none;color: #FFF;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</a></div>
<h1 style="text-align: center;font-size: 26px;line-height: 50px;margin: 30px 60px;font-weight: bold;font-family: 宋体,微软雅黑,serif;">
你在 [' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '] 的留言有了新回复
</h1>
<div style="border-bottom: 1px solid #333;height: 0px;margin: 0 60px;"></div>
<div style="margin: 30px 60px;color: #363636;">
<p style="font-size: 16px;font-weight: bold;line-height: 30px;">Hi,' . trim(get_comment($parent_id)->comment_author) . '!</p>
<div style="font-size: 16px;">
<p><strong>你曾在本博客《' . get_the_title($comment->comment_post_ID) . '》的留言为:</strong></p>
<blockquote style="border-left: 4px solid #ddd; padding: 5px 10px; line-height: 22px;">' . trim(get_comment($parent_id)->comment_content) . '</blockquote>
</div>
<div style="font-size: 16px;">
<p><strong>' . trim($comment->comment_author) . ' 给你的回复为:</strong></p>
<blockquote style="border-left: 4px solid #ddd; padding: 5px 10px; line-height: 22px;">' . trim($comment->comment_content) . ' </blockquote>
</div>
<p style="font-size: 16px;line-height: 30px;">
你可以点击此链接 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '" style="text-decoration: none;color: #50A5E6;">查看完整回复内容</a> | 欢迎再次来访 <a href="' . get_option('home') . '" style="text-decoration: none;color: #50A5E6;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</a>
</p>
<p style="color: #999;">(此邮件由系统自动发出,请勿回复!)</p>
</div>
<div style="border-bottom: 1px solid #dfdfdf;height: 0px;margin: 0 60px;"></div>
<div style="text-align: right;padding: 30px 60px;color: #999;">
<p>Powered by ' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) .'</p>
</div>
</div>
</div>';
wp_php_mail ($to,$subject,$message,$ishtml,$nohtmlmess='');
}
}
add_action('comment_post', 'wp_comment_mail_notify'); //基于PHPMailer的邮件发送
function wp_php_mail ($to,$subject,$message,$ishtml,$nohtmlmess='')
{
$mail = new PHPMailer; $mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
); //$mail->SMTPDebug = 2; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = PM_HOST; // Specify main and backup SMTP servers
$mail->SMTPAuth = PM_SMTPAuth; // Enable SMTP authentication
$mail->Username = PM_Username; // SMTP username
$mail->Password = PM_Password; // SMTP password
$mail->SMTPSecure = PM_SMTPSecure; // Enable TLS encryption, `ssl` also accepted
$mail->Port = PM_Port; // TCP port to connect to
$mail->CharSet = PM_CharSet; $mail->setFrom(PM_Username, PM_Username);
$mail->addAddress($to, $to); // Add a recipient
$mail->addReplyTo(PM_Username, 'Information');
$mail->isHTML($ishtml); // Set email format to HTML $mail->Subject = $subject;
$mail->Body = $message;
$mail->AltBody = $nohtmlmess; if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
}
} /**
* 修改邮件发送方式为使用SMTP发送
*/
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp( $phpmailer ) {
$phpmailer->FromName = 'Your Name'; //对方收到邮件后显示的发件人名称
$phpmailer->Host = PM_HOST; //SMTP服务器
$phpmailer->Port = PM_Port; //SMTP端口号
$phpmailer->Username = PM_Username; //发送邮件的邮箱账号
$phpmailer->Password = PM_Password; //发送邮件的邮箱密码
$phpmailer->From = PM_Username; //来自,应与 Username相同
$phpmailer->SMTPAuth = PM_SMTPAuth;
$phpmailer->SMTPSecure = PM_SMTPSecure; //tls or ssl ,是否启用SSL
$phpmailer->IsSMTP(); //这一行指定了使用SMTP发送邮件
return $phpmailer;
}

关于配置里那些常量,我写在 wp-config.php里了。关于配置该怎么写的问题,请参考这里 (直接看人家的 examples)。

WordPress无插件实现SMTP给评论用户发送邮件提醒的更多相关文章

  1. 关于wordpress插件WP SMTP的邮箱设置

     花了两天的时间把邮箱设置好了,把大概的步骤写下,放一下查到的资料. 1.去域名服务商那里添加MX记录      如下图的MX      2.测试主机是否禁用了mail()函数      参考链接wo ...

  2. EasyNVR网页H5无插件播放摄像机视频功能二次开发之直播通道接口保活示例代码

    背景需求 随着雪亮工程.明厨亮灶.手机看店.智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网.微信直播,我们知道摄像头直播的春天了.将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP.HT ...

  3. wordpress常用插件汇总

    WordPress之所以能成为目前最具人气的独立博客程序,除了无数爱好者为它开发的主题外,源源不断的插件支持也是重要的原因之一.wordpress的强大,也是在于无数爱好者源源不断的主题和插件. wo ...

  4. 【基础教程】推荐10+必备的 WordPress 常用插件

    1.Akismet Akismet 是 WordPress 官方推荐的一款 WordPress 防垃圾评论插件,也是默认已安装的插件. 2.WP-Postviews 最好的最流行的WordPress浏 ...

  5. WordPress缓存插件WP Super Cache的使用及常见问题解决

    WP Super Cache是一款很好的WordPress优化插件,是我用过最好的一款缓存插件.打开WordPress后台搜索插件页面,第一个就是这个插件,可想而知他的地位有多厉害了. 什么是WP S ...

  6. REST API TO MiniProgram 上线WordPress官方插件库

    全新开发的用于 wordpress微信小程序的插件 REST API TO MiniProgram今天上线WordPress官方插件库.这个插件的上一个版本叫:wp-rest-api-for-app, ...

  7. 002.WordPress常见插件

    Akismet Akismet 是 WordPress 官方推荐的一款 WordPress 防垃圾评论插件,也是默认已安装的插件. WP-Postviews 最好的最流行的WordPress浏览次数统 ...

  8. 推荐10+必备的 WordPress 常用插件

    众多的WordPress插件,使得WordPress的功能得到了较大的扩展,但是也正是由于过多的插件,导致我们很难选择所需的插件.今天,倡萌就根据自己的经验,给WordPress新手推荐一些常用的插件 ...

  9. 站长必备:10个好用的 WordPress 备份插件

    网站备份对于站长来说极其重要的.任何的事情都可能发生,这可能会导致你失去所有的辛勤工作:您的网站可能被黑客攻破,你可以安装一个了插件导致冲突,你的服务器可能被攻击,你可能在编辑文件时犯了一个错误等等, ...

随机推荐

  1. 关于Oracle RAC中SCN原理和机制的探索

    今天看书时看到了关于RAC中SCN的问题,为了进一步搞清楚其内部原理和机制,对该问题进行了广泛的查阅和搜索,遗憾的是,可以参考的资料很少,网上大部分是人云亦云的帖子,其中,详细介绍其内部原理和机制的资 ...

  2. ActiveMQ使用例子

    网上收集的例子:有broker,producer,consumer public class MqApp { public static void main(String[] args) throws ...

  3. springboot aop 自定义注解方式实现一套完善的日志记录(完整源码)

    https://www.cnblogs.com/wenjunwei/p/9639909.html https://blog.csdn.net/tyrant_800/article/details/78 ...

  4. bash 调试

    bashdb test.sh step edit  visual 跳到那一行 R restart http://www.ibm.com/developerworks/cn/linux/l-cn-she ...

  5. linux系统管理 计划任务

    一次性计划任务 命令: at 语法: at [-f 文件名] 时间 绝对计时方法 HH:MM yyyy-MM-dd 相对计时方法 now + n minutes now+n hours now + n ...

  6. shell 变量介绍

    变量命名规则 变量名必须以字母或下划线开头,名字中间只能由字母,数字和下划线组成,大小写是区分的 变量名的长度不得超过255个字符 变量名在有效的范围内必须是唯一的 在Bash中,变量的默认类型都是字 ...

  7. 尚学堂java 参考答案 第九章

    一.选择题 1.AC 解析:A.注意题目是Collections不是 Collection,前者是一个until下的类,后者才是接口 C.Set中的数据是无序且不能重复的 2.A 解析:将发生数组越界 ...

  8. hibernate创建构架

    创建hibernate架构: 注意:需要将所需的架包导进去: 二:Java工程的具体结构: 具体代码如下:hibernate.cfg.xml <!DOCTYPE hibernate-config ...

  9. commons-logging 与log4j的关系

    参考:http://zachary-guo.iteye.com/blog/361177

  10. 《Python》线程之锁、信号量、事件、条件、定时器、队列

    一.锁 线程为什么要有锁: += .-= 赋值操作数据不安全(要经过取值.计算.放回值,3部操作) pop .append 都是数据安全的(只有添加和删除,一次操作) 队列也是数据安全的 1.同步锁 ...