關於PHPmailer發送郵件失敗之Failed to connect to server

來源:互聯網
上載者:User
看到一篇很好的文章,如下

使用phpmailer類smtp發送郵件不成功;排查思路首先在代碼中,我們開啟SMTPDebug$mail = new PHPMailer();//建立郵件發送類

$mail->SMTPDebug = true; //要把SMTPDebug 的屬性設定為true

如果郵件發送不成功,則會提示錯誤資訊

我這次報的錯誤是Failed to connect to serverfollowing 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基本一致,

所以只需要將@fsockopen替換成@pfsockopen就可以了。如果運氣好 pfsockopen沒被禁用,ok通過

方法2:使用stream_socket_client函數

一般fsockopen()被禁,,pfsockopen也有可能被禁,所以這裡介紹另一個函數stream_socket_client()。

stream_socket_client的參數與fsockopen有所不同,所以代碼要修改為:

$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno, $errstr, $tval);

這樣就可以了。


本文出自 “909是個目標” 部落格,請務必保留此出處

串連如下:

http://www.68idc.cn/help/jiabenmake/qita/2014042793331.html

以上就介紹了關於PHPmailer發送郵件失敗之Failed to connect to server,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.