Gimhoy's Blog

您曾经浏览过

WordPress无插件实现SMTP发送邮件

本文最后更新于2013年5月8日,已超过三年没有更新,如果文章内容失效,请反馈给我们,谢谢!

在使用WordPress的过程中,不可避免地要用到邮件功能。WP自带了mail函数,但用自带mail函数发送邮件很容易失败或者被拒收。所以很多人选择用更方便高效的SMTP来发送邮件。要用SMTP发送邮件,首先需要拥有一个支持SMTP的邮箱(包括Gmail、QQ、126、163等主流邮箱都支持SMTP功能,可能需要到设置中打开),然后在WordPress中简单设置一下。你可以选择用插件,Configure SMTP或者WP Mail SMTP都是不错的插件。前者还支持调试,可以方便地知道是什么原因导致发送失败。下面介绍的是无插件实现SMTP发送功能,毕竟插件多了对速度有不利的影响。

这个功能实现起来也很简单,有两种方法可以实现。

第一种:打开主题文件夹下的functions.php(主机目录/wp-content/themes/主题名/functions.php),在最后一个 ?> 之前加上下面的代码即可:

//使用smtp发邮件

add_action('phpmailer_init', 'mail_smtp');

function mail_smtp( $phpmailer ) {

$phpmailer->IsSMTP();

$phpmailer->SMTPAuth = true;//启用SMTPAuth服务

$phpmailer->Port = 465; //SMTP邮件发送端口,常用端口有:25、465和587(后两个为ssl安全连接端口)。

$phpmailer->SMTPSecure ="ssl"; //是否通过 ssl 连接,如果端口为25,则此处将"ssl"改为空白即"",否则不必改动

$phpmailer->Host = "smtp.gmail.com"; // SMTP服务器地址,在邮箱设置或者帮助中心中可以找到

$phpmailer->Username = "username@gmail.com"; //你的邮箱地址

$phpmailer->Password ="******"; //你的邮箱登陆密码

}

 

第二种:直接修改WordPress源文件class-phpmailer.php和pluggable.php,这个方法需要对WordPress的2个源文件做小小的修改。好处就是你不需要每次更改主题都修改functions.php,而且更安全。

在WordPress的wp-includes目录下找到pluggable.php和class-phpmailer.php两个文件。

将pluggable.php中的"$phpmailer->IsMail(); "替换为:"$phpmailer->IsSMTP();"

在class-phpmailer.php中修改下面对应的设置:

public $Mailer = 'smtp';
public $Host = 'smtp.gmail.com';  //邮箱的SMTP服务器地址
public $Port = 465;  //SMTP邮件发送端口
public $SMTPSecure = "ssl"; //是否验证 ssl或tls
public $SMTPAuth = true; //开启SMTPAuth
public $Username = 'username@gmail.com'; //你的邮箱地址
public $Password = '******'; //你的邮箱登陆密码

快去试一下,跟插件说拜拜吧~



免费获得每月10G空间+10G免费流量
  • Comment (24)
  • Trackback (1)
  • Google ChromeWindowsChina2015/09/15 08:26@Ta

    页面上表单的 action 属性应该写什么呀

    #13
  • 沧海笑Mozilla FirefoxWindowsChina2015/04/02 11:23@Ta

    第一段代码,直接粘贴是无法使用的。我也不懂PHP,我只懂点程序,我觉得代码里面有些是非程序字符,你可以改一下吗?

    #12
  • 上校门卫Mozilla FirefoxWindowsChina2014/06/16 12:01@Ta

    博主,回复的时候给用户发邮件和这段代码有关不?或者您能告诉我如何实现给回复者发邮件吗?

    #11
    • GimhoyGoogle ChromeWindowsChina2014/07/27 23:17@Ta

      博客里都有介绍,你翻翻就有了~

  • betafansGoogle ChromeWindowsChina2014/05/30 14:57@Ta

    我试过了,还是无法开启,应该是主机彻底的禁用了mail()函数了。现在只能用smtp插件代替了。

    #10
    • GimhoyGoogle ChromeWindowsChina2014/07/27 23:30@Ta

      这就是用SMTP,没用mail函数

  • 少爷Google ChromeWindowsChina2014/04/21 22:11@Ta

    nginx下配置了网站打不开,空白

    #9
    • GimhoyGoogle ChromeWindowsChina2014/04/22 18:46@Ta

      看看是不是哪里有语法问题,网站上的代码可能被转义了。

      • 少爷Google ChromeWindowsChina2014/04/22 18:48@Ta

        请问博主,你的这个回复自动发送邮件子怎么设置的

        • GimhoyGoogle ChromeWindowsChina2014/04/22 19:02@Ta

          这个百度搜一下很多教程的~

  • lufanMozilla FirefoxWindowsChina2014/04/18 18:32@Ta

    博主,请你帮看看:http://ljcnxxbk.sinaapp.com/?page_id=2,我留言和注册用户都没有收到邮件,是哪里出错了,怎么改,请指点,不太懂。

    #8
    • RunningGoogle ChromeMac OSChina2015/03/16 01:50@Ta

      我也是这个情况,我用得阿里云主机,mail()函数明明也是支持的,插件也用了,还是不行,绝望了...

  • lufanMozilla FirefoxWindowsChina2014/04/17 21:08@Ta

    用的是163的邮箱,没有任何提示。

    #7
    • GimhoyGoogle ChromeWindowsChina2014/04/18 03:36@Ta

      打开调试模式看看是哪里出错了

  • lufanMozilla FirefoxWindowsChina2014/04/17 21:07@Ta

    按照你说的邮件设置了主题和源文件,注册新账户和评论都没有收到发送的邮件,为何呀?

    #6
  • 491580711Google ChromeWindowsChina2014/04/02 15:04@Ta

    你这评论模块是用的插件还是? 🙄

    #5
  • CY's BLOGGoogle ChromeWindowsChina2014/02/19 23:38@Ta

    我估计我这么配置了还是不能行。。

    #4
  • joerh99Mozilla FirefoxUbuntu LinuxChina2013/05/02 18:16@Ta

    博主,我按你的方法设置了,还是没有收到邮件

    我的是wordpress3.5.1版的,用了几个插件都不行,别个给我评论了我收得到邮件提醒,但是我回复了别个收不到

    就这样了,不知道怎么回事

    #3
    • ashinGoogle ChromeWindowsChina2013/09/05 16:31@Ta

      @joerh99: 我跟你的情况一样· 很麻烦一直搞不好

  • wulitouGoogle ChromeWindowsChina2013/04/23 14:14@Ta

    没配置成功能指点下么

    #2
    • GimhoyGoogle ChromeWindowsReserved2013/04/23 18:38@Ta

      有什么提示么?

  • Scoop GUOGoogle ChromeWindowsChina2013/02/18 23:07@Ta

    每次配置wordpress的邮件发送都要让我吐一回血x_x

    #1
    • GimhoyGoogle ChromeWindowsChina2013/02/18 23:09@Ta

      看主机吧。。有些还是比较好弄