首頁 >後端開發 >php教程 >使用phpmailer發送郵件提示SMTP Error錯誤的解決方法

使用phpmailer發送郵件提示SMTP Error錯誤的解決方法

黄舟
黄舟原創
2017-08-09 10:30:372626瀏覽

之前做專案的時候做了一個用phpmailer發送郵件的功能《CI框架結合PHPmailer發送郵件》,昨天步署上線(剛開始用新浪雲,嫌貴,換成阿里了),測試的時候,發送郵件卻意外報錯了..........

使用phpmailer發送郵件提示SMTP Error錯誤的解決方法

然後我在class.phpmailer.php中,將


#
public function IsSMTP() {
    $this->Mailer = 'smtp';
  }

//改成
public function IsSMTP() {
    $this->Mailer = 'SMTP';
  }

然後將:


 switch($this->Mailer) {
        case 'sendmail':
          return $this->SendmailSend($header, $body);
        case 'smtp':
          return $this->SmtpSend($header, $body);
        default:
          return $this->MailSend($header, $body);
      }


//改成
switch($this->Mailer) {
        case 'sendmail':
          return $this->SendmailSend($header, $body);
        case 'SMTP':
          return $this->SmtpSend($header, $body);
        default:
          return $this->MailSend($header, $body);
      }

我本來以為這樣就可以了,重啟Apache,再次測試一下,結果第一個錯誤是解決了,又出現了一個報錯:

Could not instantiate mail function

? ? ? ? ?

不知道你們有沒有出現,我運氣差,只好又求助度娘,終於找到原因:有的虛擬主機,或伺服器,為了安全起見屏蔽了「fsockopen()函數」導致無法傳送郵件。

下面說解決方法:

首先,在php.ini中去掉下面的兩個分號

;extension=php_sockets.dll

;extension=php_openssl.dll

之前我用PHPmailer的時候已經去掉了,這裡只是提示一下。

 接著取代fsockopen函數

將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


//fsockopen改为:
$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

這樣設定完,我的已經可以成功傳送郵件了,如果同樣有這方面問題的,可以參考上面的範例試試看。

以上是使用phpmailer發送郵件提示SMTP Error錯誤的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn