看到一篇很好的文章,如下
使用phpmailer類smtp發送郵件不成功;排查思路首先在代碼中,我們打開SMTPDebug$mail = new PHPMailer();//建立郵件發送類
$mail->SMTPDebug = true; //要把SMTPDebug 的屬性設定為true
如果郵件發送不成功,則會提示錯誤訊息的情況是 fail to server
following From address failed開啟DEBUG提示:ERROR: Failed to connect to server: (0)既然是連接不上,那麼我們就看是靠什麼連接的,經詢問度娘得知連接smtp伺服器是靠fsockopen連接的,那麼我們來看看這個函數是否被禁用在PHP.ini裡查找1,allow_url_fopen = On 查看該選項是否是On,是Off時函數肯定是不能用,改成On.如果還不能用,怎麼辦?因為上面的配置,是說fopen是打開狀態的,不是說打開了就能用,還要允許使用才能用,好,我們看看禁用的方法裡有沒有fsockopen2,disable_functionsdisable_functions 這個後面,有很多被禁用的方法,有fsockopen,好恭喜你,找到答案了,將它去掉,OK,重啟apache,搞掂還不行?同樣是在php.ini檔案中,看看這個開啟沒有?extension=php_openssl.dll如果已開啟,再看看php目錄下的兩擴充檔案有沒有拷到c/:windows/System32下libeay32.dll ssleay32.dll另外:不改動伺服器,只改程式碼的情況,也可以一試,註=>我沒試過 方法1:將fsockopen函數替換成pfsockopen函數因為pfsockopen的參數與fsockopen基本上一致,
所以只需要將@fsockopenp@pfsopensopen就可以替換了。如果運氣好 pfsockopen沒被停用,ok通過
方法2:使用stream_socket_client函數
一般fsockopen()被禁,,pfsockopenopen 也有可能被禁,所以這裡介紹另一個函數clistream_socket_client(s)。
stream_socket_client的參數與fsockopen有所不同,所以程式碼要修改為:
$this->smtp_conn = stream_socket_client("tcp://no.$host."err".$port, $. , $errstr, $tval);
這樣就可以了。
本文出自「909是個目標」 博客,請務必保留此出處
連接如下:🜎 2014042793331.html
以上就介紹了關於PHPmailer發送郵件失敗之Failed to connect to server,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。