Невозможно отправить электронную почту через Gmail с помощью phpmailer_v5.1

StackOverflow https://stackoverflow.com/questions/2098718

  •  21-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь отправить электронную почту через 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!
    }
    ?>
Это было полезно?

Решение

На основании ошибки кажется, что SSL не включен в PHP. Вне моей головы, я считаю, что вам нужно неудобно

extension = php_openssl.dll

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

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

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

Другие советы

Ну, в сообщении об ошибке говорится:

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

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

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

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

Я предполагаю, что либо MOD_SSL не установлен для Apache, либо установлен, но строки конфигурации для MOD_SSL комментируются на httpd.conf (как это было на SUSE9 для меня). APXS будет включать функции SSL только в PHP, если MOD_SSL работает и работает

Итак, проверьте mod_ssl доступен + включен в Apache, затем попробуйте перекомпилировать PHP с помощью

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top