原创 Windows下WordPress邮件发送(外部smtp)解决方案收藏

最近朋友采用WordPress做了个博客,但却被邮件发送的问题烦恼死了.WP在缺省无sendmail等UNIX下的邮件服务器时,怎么也不能发送邮件.忙活了两天,基本把这个问题给解决了.在社区闲逛时,有位老兄提到可以使用phpmailer,后来查看了一下WP2.2的所有文件,发现它原来就自带这个东东.但是得小小的修改一下才能让它工作,在此感谢这位兄弟,所有代码均来自它的小站^_^(小菜不懂PHP语言555...),下面开始动手拉

1.打开/wp-includes/目录下的class-phpmailer.php,查找class.smtp.php将其替换成class-smtp.php(官方的phpmailer两个文件名分别是class.phpmailer.phpclass.smtp.php,放在WP以后,可能是为了统一文件命名方式就改成了class-phpmailer.phpclass-smtp.php,但忘了将里面调用的文件名一起修改了,呵呵)
2.在/wp-includes/目录下新建立mail.inc.php(设置发送邮件需要使用的smtp),代码如下

<?php 
require("class.phpmailer.php"); 
  
class MyMailer extends PHPMailer { 
  
// Set default variables for all new objects 
  var $Mailer = "smtp"// Alternative to IsSMTP() 
  var $CharSet = "utf-8"
  
var $From = "你的邮件地址"
  var $FromName = "name,你想起什么名字都可以"
  var $Host = "smtp服务器地址"
  var $Port = 25; //smtp server port
  
var $SMTPAuth = true
  
var $Username = "你邮件的帐号"
  
var $Password = "你邮件的密码"
  
//var $SMTPDebug = true; 
  var $WordWrap = 75

?>

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, $type) { 
  
require("mail.inc.php"); 
  
  
$mail = new MyMailer; 
  
$mail->AddAddress($to); 
  
$mail->Subject = $subject
  
$mail->Body = $message
  
$mail->AddStringAttachment($string, $filename, $encoding, $type); 
    
  
return $mail->Send(); 

endif;

OK,到此只需要在mail.inc.php中设置好smtp服务器地址,端口,用户名和密码就可以使用非SSL SMTP Server(比如163)发送邮件了.

PS:PHP似乎采用配置版的比较好;添加以上代码以后,非得在后台先启用用户注册,不然怎么也不能发送邮件,真是奇异^_^

发表于 @ 2007年06月07日 01:05:00|评论(loading...)

 | 旧一篇: 天邑通讯HASB-100的PPPOE路由设置(黑色波浪型)

用户操作
[即时聊天] [发私信] [加为好友]
Redecor
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
文章分类
收藏
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © Redecor