WordPress 是自带邮件功能的,它会给你发送一些重要的信息,比如有新的评论了、Wordpress 自动升级完成了、网站遇到重大问题等的时候,都会给你发送邮件通知进行提醒。
依赖 mail 函数
WordPress 的邮件提醒功能是默认打开的,但是依赖于 mail() 函数,如果你的服务器或虚拟主机不支持 mail() 函数,Wordpress 既不会报错,也不会提示你。虽然你你可能搭建了很多 WordPress 站点,但你可能自始至终就没有受到过 WordPress 发的邮件。
如果你的服务器或虚拟主机支持 mail() 函数,那么你就会受到类似如下的邮件:
这是一封代发邮件,用户自己填写好表单之后,通过服务器或虚拟主机 mail() 绑定的邮箱,代替用户给你发送过去。整个过程用户不需要登陆自己的邮箱,甚至填写的是非自己的邮箱都可以发送成功,因为这些信息都相当于内容。
然而,这种方便的 mail() 函数,很多情况下都会被邮箱提供商认定为 “垃圾邮件”,从而可能拦截了或者投递到收件人的垃圾邮箱中,可能会导致你过错重要邮件。
改用 SMTP
改用SMTP端口,使用自己的邮箱,可以解决被认定为 “垃圾邮件” 的问题,还可以让不支持 mail() 函数的服务器或虚拟主机启用 WordPress 邮件功能。
首先你要准备一个邮箱
这个邮箱将会作为发件人,比如 no_reply@yourname.com 这种样子,邮箱名称选择 no_reply, noreply, do_not_reply 等这样的比较正式一些。
PHP 需要 fsockopen 函数的支持
你需要在 php.ini 配置打开 fsockopen() 函数,这是必须的,否则你没法使用 SMTP。
WordPress中添加相关代码
添加以下代码到 function.php 中,或者使用 Snippets 这类插件,导入相关代码。
function MBT_mail_smtp( $phpmailer ) { $phpmailer->IsSMTP(); $phpmailer->SMTPAuth = true; $phpmailer->FromName = '邮件标题'; $phpmailer->Port = 465; $phpmailer->SMTPSecure ="ssl"; $phpmailer->Host = "smtp服务地址"; $phpmailer->Username = "nore_ply@yourname.com"; $phpmailer->Password ="邮箱密码"; } add_action('phpmailer_init', 'MBT_mail_smtp'); function MBT_wp_mail_from( $original_email_address ) { return 'nore_ply@yourname.com'; } add_filter( 'wp_mail_from', 'MBT_wp_mail_from' );
第 4 行是邮件的标题,第 5 行是 SMTP 的 SSL 端口号,其余的按照自己的修改即可。需要注意的是,第 8 行和第 14 行这里的邮箱地址必须一致。
配置完成后即可生效。