新聞中心
使用phpmailer類smtp發(fā)送郵件不成功;
排查思路
首先在代碼中,我們打開SMTPDebug
$mail = new PHPMailer(); //建立郵件發(fā)送類
$mail->SMTPDebug = true; //要把SMTPDebug 的屬性設(shè)置為true
創(chuàng)新互聯(lián)是一家專業(yè)提供瀾滄企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計、成都做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為瀾滄眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
如果郵件發(fā)送不成功,則會提示錯誤信息
我這次報的錯誤是
Failed to connect to server
following From address failed
開啟DEBUG提示:ERROR: Failed to connect to server: (0) 既然是連接不上,那么我們就看是靠什么連接的,經(jīng)詢問度娘得知連接smtp服務(wù)器是靠 fsockopen連接的,那么我們來看看這個函數(shù)是否被禁用
在PHP.ini里查找
1,allow_url_fopen = On 查看該選項是否是On,是Off時函數(shù)肯定是不能用,改成On.
如果還不能用,怎么辦?因為上面的配置,是說fopen是打開狀態(tài)的,不是說打開了就能用,還要允許使用才能用,好,我們看看禁用的方法里有沒有fsockopen
2,disable_functions
disable_functions 這個后面,有很多被禁用的方法,有fsockopen,好恭喜你,找到答案了,將它去掉,OK,重啟 apache,搞掂
還不行?同樣是在php.ini文件中,看看這個打開沒有?extension=php_openssl.dll
如果已打開,再看看php目錄下的兩個擴(kuò)展文件有沒有拷到c/:windows/System32下
libeay32.dll ssleay32.dll
另外:不改動服務(wù)器,只改代碼的情況,也可以一試,注=>我沒試過
方法1:將fsockopen函數(shù)替換成pfsockopen函數(shù)
因為pfsockopen的參數(shù)與fsockopen基本一致,
所以只需要將@fsockopen替換成@pfsockopen就可以了。如果運(yùn)氣好 pfsockopen沒被禁用,ok通過
方法2:使用stream_socket_client函數(shù)
一般fsockopen()被禁,pfsockopen也有可能被禁,所以這里介紹另一個函數(shù)stream_socket_client()。
stream_socket_client的參數(shù)與fsockopen有所不同,所以代碼要修改為:
$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $tval);
這樣就可以了。
本文標(biāo)題:關(guān)于PHPmailer發(fā)送郵件失敗之Failedtoconnecttoserver
瀏覽路徑:http://www.dlmjj.cn/article/gcdecd.html