下面由WordPress教程欄目給大家介紹解決WordPress發(fā)送郵件提示“您的主機(jī)禁用了Mail函數(shù)”的方法,希望對(duì)需要的朋友有所幫助!
具體問(wèn)題情況
最近在查找主題BUG的時(shí)候發(fā)現(xiàn)一個(gè)很有趣的現(xiàn)象,就是 SMTP 郵箱設(shè)置的問(wèn)題,評(píng)論回復(fù)是可以是可以不正常發(fā)送的,但是卻沒(méi)有任何審核的提示,通過(guò)郵箱找回出現(xiàn)如下錯(cuò)誤:
無(wú)法發(fā)送電子郵件。
可能原因:您的主機(jī)禁用了mail()函數(shù)。
檢測(cè)mail函數(shù)是否禁用
使用PHP探針來(lái)檢測(cè)主機(jī)商是否禁用了mail函數(shù)。
PHP探針代碼如下,保存為php文件上傳到服務(wù)器打開(kāi)就可以測(cè)試出來(lái):
<!--?php if (function_exists('mail')) { echo "支持mail()函數(shù)!"; } else echo "不支持mail()函數(shù)!"; ?-->
解決方案
本來(lái)以為是衡天主機(jī)禁用了mail()函數(shù),但是通過(guò)PHP探針發(fā)現(xiàn),并沒(méi)有禁用。
下面提供禁用和支持mail函數(shù)都出現(xiàn)mail函數(shù)被禁用的解決方案給大家,親身經(jīng)歷啊,別再有人栽倒這里了。
主機(jī)禁用mail函數(shù)解決方案
通過(guò)上面的PHP探針,如果發(fā)現(xiàn)主機(jī)禁用了mail函數(shù)則直接使用SMTP發(fā)送郵件來(lái)代替原來(lái)的mail函數(shù)
在這里送上使用的SMTP郵箱設(shè)置代碼(示例為博客郵箱設(shè)置),丟進(jìn) functions.php 就行了。
function mail_smtp( $phpmailer ){ $phpmailer->From = “l(fā)ijie@php2.cc”; //發(fā)件人 $phpmailer->FromName = “PHP二次開(kāi)發(fā)”; //發(fā)件人昵稱 $phpmailer->Host = “smtp.ym.163.com”; //SMTP服務(wù)器地址 $phpmailer->Port = 25; //SMTP端口,常用的有25、465、587,具體谷歌百度 $phpmailer->SMTPSecure = “”; //SMTP加密方式,常用的有SSL/TLS,具體谷歌百度 $phpmailer->Username = “l(fā)ijie@php2.cc”; //郵箱帳號(hào) $phpmailer->Password = *; //郵箱密碼(縉哥哥就用星號(hào)代替了) $phpmailer->IsSMTP(); //使用SMTP發(fā)送 $phpmailer->SMTPAuth = true; //啟用SMTPAuth服務(wù) } add_action(‘phpmailer_init’,’mail_smtp’);
主機(jī)支持mail函數(shù)解決方案
如果測(cè)試支持mail函數(shù)往下看:
由于之前只有測(cè)試管理員的郵箱,后來(lái)我試著注冊(cè)新用戶,使用郵箱找回密碼的功能,結(jié)果郵件正常發(fā)送,毫無(wú)意外。
接著,我更換SMTP郵箱賬戶為163郵箱,重新用管理員郵箱找回密碼,結(jié)果也是正常接收,毫無(wú)意外。
終于,大徹了,原來(lái)收件郵箱和發(fā)件郵箱不能相同。這個(gè)結(jié)果另我很意外,居然是出現(xiàn)在這么小的環(huán)節(jié)上,弄得我以為是主題問(wèn)題,更改了好幾次代碼,囧,不過(guò)也因此修復(fù)了一個(gè)重大BUG。折騰啊,年輕不折騰還什么時(shí)候折騰。
不過(guò)話說(shuō)回來(lái),自從更換了163郵箱后,163郵箱里就收到一大堆的審核啊,評(píng)論回復(fù)啊,注冊(cè)啊的郵件提醒,神煩有木有,干脆就單獨(dú)弄個(gè)管理員郵箱作為發(fā)件郵箱,這樣就可以有效減少接收的郵件,這下子耳根子清靜了。