Невозможно отправить письмо через gmail, используя PHPMailer_v5.1 - PullRequest
1 голос
/ 20 января 2010

Я пытаюсь отправить письмо через gmail, используя PHPMailer_V5.1.

Получение следующей ошибки,

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 ]

8 голосов
/ 20 января 2010

Судя по ошибке, кажется, что SSL не включен в PHP. От вершины головы я считаю, что вам нужно раскомментировать

extension = PHP_openssl.dll

в вашем файле php.ini

Следующие инструкции помогут вам установить SSL, если он уже настроен в вашей системе:

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

0 голосов
/ 20 января 2010

Ну, в сообщении об ошибке сказано все:

Не удалось найти транспортный сокет "ssl" - вы забыли включить его при настройке PHP?

Это означает, что версия PHP не оснащена необходимыми библиотеками для связи с почтовым сервером (или любым другим сервером в этом отношении) через SSL.

Если у вас нет корневого доступа к вашему серверу, это, вероятно, проблема для администратора / поставщика вашего сервера.

Из аналогичного обсуждения на форуме , возможное решение, которое звучит довольно реалистично:

Я предполагаю, что либо mod_sslне установлен для apache или установлен, но строки конфигурации для mod_ssl закомментированы в httpd.conf (как это было для suse9 для меня).apxs включит функции ssl в php только в том случае, если mod_ssl запущен и работает

Поэтому проверьте, что mod_ssl доступен + включен в apache, затем попробуйте перекомпилировать php с помощью

.usr / sbin / apxs --with-mysql --enable-ssl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...