文章來源:合肥笑緣信息技術有限公司http://www.xyservice.com 如果轉載,請註明出處,否則請勿轉載,謝謝!
大家知道,虛擬主機因爲其特殊性,Web服務的入門級產品有很多功能受到空間商的限制,比如某些服務商爲了保證安全會禁用fsockopen和pfsockopen函數,但是這樣一來,依賴fsockopen函數發郵件的phpcms就無法正常發送郵件了,合肥網站製作公司合肥笑緣信息技術有限公司教您如何解決phpcms無法發送郵件的問題
我們要用到stream_socket_client這個函數,關於這個函數的詳細用法請自行查找,不在本篇講述範圍,閒話少說,直接講解決辦法
第一步:打開文件phpcms/libs/functions/mail.func.php
第二步:找到下面這段代碼(大概在第78行附近)
if(!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) {
runlog('SMTP', "($mail[server]:$mail[port]) CONNECT - Unable to connect to the SMTP server", 0);
return false;
}
第三步:將fsockopen($mail['server'],$mail['port'], $errno, $errstr, 30)替換爲下面的代碼:
stream_socket_client($mail['server'].':' .$mail['port'], $errno, $errstr, 30)
第四步:保存
好了,到這裏,應該就可以發送郵件了,如果還是不行,請檢查以下兩點原因:
1.smtp服務器配置是否正確,用戶名密碼是否正確
2.郵件服務商是否允許遠程發送郵件,郵箱是否開通了smtp服務(QQ郵箱默認就是關閉的),另外QQ郵箱需要設置獨立密碼並開通SMTP服務纔可以遠程調用。
3.如果以上幾點都沒問題,問問空間商,是不是連stream_socket_client函數也給禁用了,如果空間商連stream_socket_client函數也禁用了,好吧,別折騰了,估計空間商也不咋地,趕緊換空間商吧。