空間商關閉fsockopen和pfsockopen函數導致phpcms 無法發送郵件的解決辦法

文章來源:合肥笑緣信息技術有限公司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函數也禁用了,好吧,別折騰了,估計空間商也不咋地,趕緊換空間商吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章