无法使用PHPMailer_v5.1通过Gmail发送电子邮件

时间:2010-01-20 02:40:34

标签: php gmail phpmailer

我正在尝试使用PHPMailer_V5.1通过gmail发送电子邮件。

收到以下错误,

SMTP - >错误:无法连接到服务器:无法找到套接字传输“ssl” - 您是否忘记在配置PHP时启用它? (41961176) SMTP错误:无法连接到SMTP主机。

以下是随PHPMailer下载的代码,我刚修改了 必填字段,

<?php
    require_once('../class.phpmailer.php');
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

    $mail->IsSMTP(); // telling the class to use SMTP

    try {
      $mail->Host       = "mail.yourdomain.com"; // SMTP server
      $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
      $mail->SMTPAuth   = true;                  // enable SMTP authentication
      $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
      $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
      $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
      $mail->Username   = "santosh1984naidu@gmail.com";  // GMAIL username
      $mail->Password   = "********";            // GMAIL password
      $mail->AddReplyTo('santosh1984naidu@gmail.com', 'First Last');
      $mail->AddAddress('santosh1984naidu@gmail.com', 'John Doe');
      $mail->SetFrom('santosh1984naidu@gmail.com', 'First Last');
      $mail->AddReplyTo('santosh1984naidu@gmail.com', 'First Last');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
      $mail->MsgHTML(file_get_contents('contents.html'));
      $mail->AddAttachment('images/phpmailer.gif');      // attachment
      $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
      $mail->Send();
      echo "Message Sent OK</p>\n";
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
    }
    ?>

2 个答案:

答案 0 :(得分:8)

根据错误,似乎在PHP中未启用SSL。我认为你需要取消注释

extension = PHP_openssl.dll

在你的php.ini文件中

以下应该可以帮助您安装SSL,如果它已经在您的系统上设置:

http://us2.php.net/manual/en/openssl.installation.php

答案 1 :(得分:0)

嗯,错误信息说明了一切:

  

无法找到套接字传输“ssl” - 您是否忘记在配置PHP时启用它?

这意味着PHP版本没有配备必要的库来通过SSL与邮件服务器(或任何其他服务器)进行通信。

如果您没有服务器的root访问权限,这可能是您的服务器管理员/提供商的问题。

similar discussion in a forum,一个听起来非常现实的可能解决方案:

  

我的猜测是,没有为apache安装mod_ssl,或者是   已安装,但mod_ssl的配置行已注释掉   httpd.conf(就像我在suse9上一样)。 apxs只会启用ssl   如果mod_ssl启动并运行

,则在php中运行      

因此检查mod_ssl是否可用+在apache中启用然后尝试重新编译   php with

     

./ configure --with-apxs2 = / usr / sbin / apxs --with-mysql --enable-ssl