本地测试WordPress时发送邮件是个问题,因为本地环境通常不支持邮件发送服务,但WordPress允许我们使用SMTP服务发送邮件,那么利用免费的smtp服务就可以实现本地发送邮件的功能,例如gmail和163的smtp服务。
实现的方法自然有两种——用插件或者写个小代码
目录
方法一:用插件实现
安装插件WP-Mail-SMTP,启用后可以在设置(Settings)->Email中找到配置页面,按照下图所示配置即可。
实现gmail发送邮件的配置方法
请将username和password替换成真实的gmail邮箱。
用163邮箱发送邮件的配置方法
请将username和password替换成真实的163邮箱,并且From Mail必须填写你用于发送邮箱的163账号,否则发送会失败。
方法二:代码实现
如果觉得插件有一些你不需要的功能,不妨尝试一下用代码实现。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邮件,就说明配置成功了。
此方法当然也适用于在线服务器,只是大多数服务器都具备发送邮件的能力。本地测试发送邮件时这样做就非常方便了。
好东西一直没去找相关代码,今天终于可以在本地调试了
好奇怪为什么WP Mail SMTP的设置中密码不显示为“***”,是故意的还是开发者遗漏?
也许作者觉得如果后台都能让人随便看的话,也就没啥安全性可言了,显示成*想看的人还是能看到
我一般用QQ邮箱~
用qq邮箱的人是不少,腾讯绑定推广的效果还是很猛的。不知道qq邮箱支不支持smtp服务
国外主机的话可以用Gmail好点,国内就163~
使用了没,看看效果怎么样
我曾经试着改代码来实现邮件发送。折腾了好久,最终我放弃了,还是装个插件吧!
我看过网上的代码,好多说要去改核心文件,其实wp_mail()里面提供了一个action可以用,只要是phpmailer的功能wp_mail()都可以用,smtp插件也不过就是多了一些用户配置选项
呵呵!我觉得要能用插件实现的,应该都是不需要改核心代码!
恩,这个说的很精辟,即使要改核心代码,wordpress也提供了修改核心代码的合法方式,像wp_mail就是一个可以被覆盖掉的核心函数