2011-08-29 120 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文件不在服务器注释。