转自CSDNRedecor的专栏
在使用WordPress时,因为虚拟机的mail()函数被禁止使用,所以和mail相关的插件都无法使用,而且有新评论的时候,自己还无法得到系统通知,不能及时的了解博客的最新动态。被这个问题烦恼了很长时间后,终于在CSDN找到了一个有效的解决办法(原文链接)。
最近朋友采用WordPress做了个博客,但却被邮件发送的问题烦恼死了.WP在缺省无sendmail等UNIX下的邮件服务器时,怎么也不能发送邮件.忙活了两天,基本把这个问题给解决了.在社区闲逛时,有位老兄提到可以使用phpmailer,后来查看了一下WP2.2的所有文件,发现它原来就自带这个东东.但是得小小的修改一下才能让它工作,在此感谢这位兄弟,所有代码均来自它的小站^_^(小菜不懂PHP语言555…),下面开始动手拉
1.打开/wp-includes/目录下的class-phpmailer.php,查找class.smtp.php将其替换成class-smtp.php(官方的phpmailer两个文件名分别是class.phpmailer.php和class.smtp.php,放在WP以后,可能是为了统一文件命名方式就改成了class-phpmailer.php和class-smtp.php,但忘了将里面调用的文件名一起修改了,呵呵)
2.在/wp-includes/目录下新建立mail.inc.php(设置发送邮件需要使用的smtp),代码如下
3.打开/wp-includes/pluggable.php,查找function wp_mail($to, $subject, $message, $headers = ”) { global $phpmailer;在global $phpmailer;其前面添加如下代码
require(“mail.inc.php”);
$mail = new MyMailer;
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $message;
return $mail->Send();
4.在此文件中查找wp_new_user_notification函数,修改其中的一行代码:
把
wp_mail($user_email, sprintf(__(‘[%s] Your username and password’), get_settings(‘blogname’)), $message);
修改成
@wp_mail($user_email, sprintf(__(‘[%s] Your username and password’), get_settings(‘blogname’)), $message);
5.在文件结尾?>前添加如下代码
if ( !function_exists(‘wp_mail_attachment’) ) :
function wp_mail_attachment($to, $subject, $message, $string, $filename, $encoding, [...]