PearMailer, PHP7 и OpenSSL не могут подключиться к Gmail с неизвестной ошибкой

Я создаю веб-сайт, и часть его должна отправлять электронные письма (один для ссылок для сброса пароля учетной записи, другой для общих контактов пользователя и администратора). Я использовал PearMailer для отправки писем через учетную запись GMail, и это работало нормально … до сих пор. По какой-то причине он перестал отправлять электронные письма, и это дает мне очень бесполезную ошибку:

 [message] => Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Unknown error) (code: -1, response: )

openSSL включен, и все учетные данные, которые я использую, являются правильными (я могу вручную войти в эту учетную запись GMail, используя их).

Это код, который я использую, где $ config содержит учетные данные учетной записи, а данные $ _POST взяты из формы «Свяжитесь с нами» (игнорируйте отсутствие очистки для нее во время разработки):

    require_once "Mail.php";
$params=array(
"host"=>"ssl://smtp.gmail.com",
"port"=>465,
"auth"=>true,
"username"=>$config["mailFrom"],
"password"=>$config["mailPass"]
);
$headers=array(
"To"=>$config["mailFrom"],
"From"=>$_POST['user']." <".$_POST["reply-to"].">",
"Content-type"=>"text/html",
"Subject"=>$_POST['subject']
);
$mail=Mail::factory("smtp", $params);
$sent=$mail->send($config["mailFrom"], $headers, htmlentities($_POST['body']));

Он должен отправлять на мою учетную запись GMail электронное письмо от себя, но вместо этого он дает мне ошибку, о которой я упоминал выше. После изменения адресов «туда и обратно», несмотря ни на что, это все равно дает мне эту ошибку. Что особенно странно, так как почти идентичный код — это то, что я использовал для отправки ссылок для сброса пароля, и до сих пор это работало нормально; конечно, сейчас тоже не удается подключиться.

Я не могу найти ничего, что Google изменил свои настройки, и я абсолютно не превысил ограничение в 2000 сообщений в день, которое должен разрешить smtp.gmail.com, так что здесь происходит?

0

Решение

Мое решение: переключился с PearMailer на SwiftMailer, и в этом я устанавливаю параметры SSL verify_peer а также verify_peer_name ложное использование $transport->setStreamOptions, Похоже, что отправлять почту сейчас очень хорошо. (Без этих опций, очевидно, SSL-сертификаты GMail не совместимы с более новыми версиями PHP.

1

Другие решения

РЕДАКТИРОВАТЬ:

Я не совсем уверен, если это будет работать для вас, попробуйте:

$params=array(
"host"=>"smtp.gmail.com",
"port"=>587,
"auth"=>true,
"username"=>$config["mailFrom"],
"password"=>$config["mailPass"]
);

Это будет использовать TLS вместо SSL. Попробуйте.

0

По вопросам рекламы [email protected]