Невозможно отправить электронную почту через Gmail с помощью phpmailer_v5.1
Вопрос
Я пытаюсь отправить электронную почту через 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, если он уже настроен на вашу систему:
Другие советы
Ну, в сообщении об ошибке говорится:
Невозможно найти транспортировку сокета "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