2011-08-29 32 views
2

我有無盡的煩惱,同時試圖使用PEAR郵件包裹發送郵件:PEAR郵件連接拒絕爲smtp.gmail.com

我用我的本地機器用於測試目的的XAMPP和下面的代碼完美的作品:

//PEAR 

    require_once('../PEAR/Mail.php'); 


    $from = "<[email protected]>"; 
    $to = "<[email protected]>"; 
    $subject = "Hi"; 
    $body = "Testing message"; 

    $host = "ssl://smtp.gmail.com"; //ssl:// 
    $port = "465"; 
    $username = "[email protected]"; 
    $password = "**********"; 

    $headers = array ('From' => $from, 
     'To' => $to, 
     'Subject' => $subject); 
    $smtp = Mail::factory('smtp', 
     array ('host' => $host, 
     'port' => $port, 
     'auth' => true, 
     'username' => $username, 
     'password' => $password)); 

    $mail = $smtp->send($to, $headers, $body); 

    function &factory($driver, $params = array()) 
{ 
    $driver = strtolower($driver); 
    @include_once 'Mail/' . $driver . '.php'; 
    $class = 'Mail_' . $driver; 
    if (class_exists($class)) { 
     $mailer = new $class($params); 
     return $mailer; 
    } else { 
     return PEAR::raiseError('Unable to find class for driver ' . $driver); 
    } 
} 


    if (PEAR::isError($mail)) { 
     echo("<p>" . $mail->getMessage() . "</p>"); 
    } else { 
     echo("<p>Message successfully sent!</p>"); 
    } 

    //end of php tag 

然而,當我將文件上傳到網上的Web服務器,並運行我收到以下錯誤完全相同的腳本:

「無法連接到SSL://smtp.gmail .com:465 [SMTP:無法連接套接字:拒絕連接(代碼:-1,回覆e:)]「

我也嘗試過端口587和443無濟於事。我猜這個問題必須存在於socket.php,smtp.php,mail.php或者甚至是服務器配置文件中,因爲上面的代碼似乎沒有任何問題。如果有人能指出我正確的方向,我將非常感激!

+0

爲什麼你在主機URL上有'ssl://'? – Treffynnon

+2

連接被拒絕,某事主動拒絕允許連接。可能是谷歌,可能是防火牆的某個地方 - 但有些東西發回了一個數據包,說「沒有辦法,jose」。這不太可能是你的代碼。可能您的ISP不允許連接到自己網絡之外的郵件服務器(寬帶isps傾向於將其用作反垃圾郵件措施)。 –

+0

[從PHP頁面使用GMail SMTP服務器發送電子郵件]的可能重複(http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page) – Treffynnon

回答

0

雅因爲你的主機可能不支持ssl連接。

向您的主機詢問php_openssl支持。或者,您可以手動嘗試以下來加載DLL。

如果(DL(php_openssl.so)) 或 如果(DL(php_openssl.dll))

這是因爲擴展的一般錯誤= php_openssl.dll文件不在服務器註釋。