程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 發送郵件SMTP Error Could not connect to SMTP host. send fail的解決辦

發送郵件SMTP Error Could not connect to SMTP host. send fail的解決辦

編輯:PHP綜合

  (1)服務器不能使用smtp的形式發送郵件解決辦法:
  很多網站列出的解決辦法說是因為smtp大小寫的問題,雖然問題的本質不在這裡,但確實也需要改這個地方,至於為什麼,看下面的操作。
  在 class.phpmailer.php 中,將:
  function IsSMTP(){$this->Mailer='smtp';}
  改成:
  function IsSMTP(){$this->Mailer = 'SMTP';}
  這個地方的修改不是使用了smtp來發送郵件,而是使用了另外一種方式發送郵件,檢查 class.phpmailer.php 文件裡面有下面這麼一段:
  switch($this->Mailer){
  case 'sendmail':
  return $this->SendmailSend($header, $body);
  case 'smtp'://由於SMTP和smtp不相等 所以選擇的是下面MailSend發送郵件 並不是使用smtp發送郵件
  return $this->SmtpSend($header, $body);
  default:
  return $this->MailSend($header, $body);
  }
  (2)Linux主機禁用了fsockopen()函數
  國內有很多空間服務商出於安全考慮會禁用服務器的fsockopen函數。解決方法:用pfsockopen() 函數代替 fsockopen() ,如果 pfsockopen 函數也被禁用的話,還可換其他可以操作Socket函數來代替, 如stream_socket_client()
  在 class.smtp.php 中將 @fsockopen 改成 @pfsockopen把
  $this->smtp_conn = @fsockopen($host, // the host of the server
  $port, // the port to use
  $errno, // error number if any
  $errstr, // error message if any
  $tval); // give up after ? secs
  改成:
  $this->smtp_conn = @pfsockopen($host, // the host of the server
  $port, // the port to use
  $errno, // error number if any
  $errstr, // error message if any
  $tval); // give up after ? secs
  (3)防火牆安全設置規則,如果以上兩種方案都不湊效,那估計是防火牆的規則問題了,可以讓服務器管理員去掉所有的防火牆規則,然後測試一下,看是否是這個原因。

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved