解决wordpress mu 收不到邮件问题

解决wordpress mu 收不到邮件问题

Filed under: wordpress |  

今天有个朋友说如何才能解决wordpress mu收不到邮件的问题呢?

我记得wordpress mu默认发送邮件是没有问题的,可是有些邮件服务器却无法收到,比如hotmail,估计是由于采用的Linux默认的sendmail,没有经过认证,所以被邮件服务器给丢弃了

那应该如何解决呢?
我以前写过一篇文章《让wordpress mu新用户注册后的密码明文显示,取消邮件通知》
上面有无法接收邮件时,直接在注册完成后显示用户和密码的方法

可是如果一定要使用邮件怎么办?
既然采用Linux内部的有时候收不到,那能不能采用外部的邮件系统呢?

仔细看了源码,发现wordpress使用的是phpmailer来进行邮件的发送
这样的话使用外部的邮件系统来发送应该问题不大,测试后采用如下步骤解决之:^__^

如果你觉得下面的东东比较麻烦,你可以点这里直接下载修改后的文章, 下载后解压至 /wp-includes/ 目录下, 记得要修改 mail-inc.php 文件中的邮件信息哦.

1)在 /wp-includes/ 新建 mail-inc.php 文件(这个文件主要是设置 SMTP 服务器的信息), 代码如下:

  1. <?php
  2.           require("class-phpmailer.php");
  3.  
  4.           class MyMailer extends PHPMailer {
  5.             // Set default variables for all new objects
  6.             var $Mailer = "smtp"; // Alternative to IsSMTP()
  7.             var $CharSet = "utf-8";
  8.             var $From = "你的邮件地址";
  9.             var $FromName = "name,你想起什么名字都可以";
  10.             var $Host = "smtp服务器地址";
  11.             var $Port = 25; //smtp server port
  12.             var $SMTPAuth = true;
  13.             var $Username = "你邮件的帐号";
  14.             var $Password = "你邮件的密码";
  15.             var $WordWrap = 75;
  16.           }
  17.        ?>

2)打开 /wp-includes/pluggable.php, 查找 function wp_mail($to, $subject, $message, $headers = ”) { global $phpmailer;
在 global $phpmail; 其前面添加如下代码:

  1. require("mail-inc.php");   
  2.         $mail = new MyMailer;
  3.         $mail->AddAddress($to);
  4.         $mail->Subject = $subject;
  5.         $mail->Body = $message;   
  6.       
  7.         return $mail->Send();

3) 继续在此文件中查找 wp_new_user_notification 函数, 把:

  1. wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_settings('blogname')), $message);
  2.        // 修改为:
  3.         @wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_settings('blogname')), $message);

好像就是在前面加上一个@而已.

4) 在文结尾(?>)前添加如下代码:

  1. if ( !function_exists('wp_mail_attachment') ) :
  2.         function wp_mail_attachment($to, $subject, $message, $string, $filename, $encoding, $type) {
  3.           require("mail.inc.php");
  4.  
  5.           $mail = new MyMailer;
  6.           $mail->AddAddress($to);
  7.           $mail->Subject = $subject;
  8.           $mail->Body = $message;
  9.           $mail->AddStringAttachment($string, $filename, $encoding, $type);
  10.     
  11.           return $mail->Send();
  12.         }
  13.         endif;

如有疑问,欢迎后面留言 ^_^


Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

If you want to leave a feedback to this post or to some other user´s comment, simply fill out the form below.

(required)

(required)