本地测试WordPress时发送邮件是个问题,因为本地环境通常不支持邮件发送服务,但WordPress允许我们使用SMTP服务发送邮件,那么利用免费的smtp服务就可以实现本地发送邮件的功能,例如gmail和163的smtp服务。

gmail

实现的方法自然有两种——用插件或者写个小代码

方法一:用插件实现

安装插件WP-Mail-SMTP,启用后可以在设置(Settings)->Email中找到配置页面,按照下图所示配置即可。

实现gmail发送邮件的配置方法

请将username和password替换成真实的gmail邮箱。

用gmail发送WordPress邮件的配置图

用163邮箱发送邮件的配置方法

请将username和password替换成真实的163邮箱,并且From Mail必须填写你用于发送邮箱的163账号,否则发送会失败

使用163发送WordPress邮件的配置图

方法二:代码实现

如果觉得插件有一些你不需要的功能,不妨尝试一下用代码实现。WordPress发送邮件的wp_mail()函数是用phpmailer实现的,曾经写过一篇文章《借助phpmailer使用gmail和163邮箱发送邮件》,将这里将介绍的代码搬到WordPress中就搞定了。

下面的代码请放在主题的functions.php中测试,当然搞成插件更佳。

用gmail发邮件的代码

add_action('phpmailer_init', 'mail_by_gmail');

function mail_by_gmail( $phpmailer ) {

	$phpmailer->IsSMTP();
 
	$phpmailer->SMTPAuth   = true;                 
	 
	$phpmailer->SMTPKeepAlive = true;                
	 
	$phpmailer->SMTPSecure = "ssl";                
	 
	$phpmailer->Host       = "smtp.gmail.com";    
	 
	$phpmailer->Port       = 465;
	
	$phpmailer->Username   = "xxxx@gmail.com";  
 
	$phpmailer->Password   = "your password";    
}

用163发送邮件的代码

add_action('phpmailer_init', 'mail_by_163');

function mail_by_163( $phpmailer ) {

	$phpmailer->IsSMTP();
 
	$phpmailer->SMTPAuth   = true;                 
	 
	$phpmailer->SMTPKeepAlive = true;                
	 
	$phpmailer->From       = "xxxx@163.com";       

	$phpmailer->Host       = "smtp.163.com";
	
	$phpmailer->Port       = 25;
	
	$phpmailer->Username   = "xxxx@163.com";  
 
	$phpmailer->Password   = "your password";    
}

使用和测试

WP Mail SMTP提供了发送邮件的测试界面,就在配置选项下面,填上自己的邮箱测试一下就知道有没有效果了。

对于代码版,请将里面的邮箱账户和密码替换问真实账户,如果你在本地安装的WordPress站点测试,可以用找回密码界面测试一下,如果能收到Password Reset邮件,就说明配置成功了。

此方法当然也适用于在线服务器,只是大多数服务器都具备发送邮件的能力。本地测试发送邮件时这样做就非常方便了。

11条留言

  1. 好东西一直没去找相关代码,今天终于可以在本地调试了

  2. 好奇怪为什么WP Mail SMTP的设置中密码不显示为“***”,是故意的还是开发者遗漏?

    1. 也许作者觉得如果后台都能让人随便看的话,也就没啥安全性可言了,显示成*想看的人还是能看到

    1. 用qq邮箱的人是不少,腾讯绑定推广的效果还是很猛的。不知道qq邮箱支不支持smtp服务

  3. 我曾经试着改代码来实现邮件发送。折腾了好久,最终我放弃了,还是装个插件吧!

    1. 我看过网上的代码,好多说要去改核心文件,其实wp_mail()里面提供了一个action可以用,只要是phpmailer的功能wp_mail()都可以用,smtp插件也不过就是多了一些用户配置选项

      1. 呵呵!我觉得要能用插件实现的,应该都是不需要改核心代码!

        1. 恩,这个说的很精辟,即使要改核心代码,wordpress也提供了修改核心代码的合法方式,像wp_mail就是一个可以被覆盖掉的核心函数

评论功能已关闭