Я пытаюсь отправить письмо после регистрации пользователя и получаю сообщение об ошибке:
Не удалось установить соединение с хостом smtp.gmail.com [Тайм-аут соединения # 110]
Я использую сервер Ubuntu 16.04. На localhost все было хорошо.
команда
openssl s_client -connect google.com:443 -tls1_2
возвращается ОК, так что я думаю, 587 порт открыт для отправки электронной почты.
мой .env
:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=***@gmail.com
MAIL_PASSWORD=*** //(not the same as I used on local machine)
MAIL_ENCRYPTION=tls
config\mail.php
:
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', '***@gmail.com'),
'name' => env('MAIL_FROM_NAME', '***'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
РЕДАКТИРОВАТЬ # 1: также я связал проблему. Пытаясь посеять это
public function run()
{
$defaultUser = User::create([
'name' => 'user',
'email' => 'user@mail.com',
'password' => bcrypt('123123'),
'verified' => 1
]);
$defaultAdmin = User::create([
'name' => 'admin',
'email' => 'admin@mail.com',
'password' => bcrypt('123123'),
'verified' => 1
]);
$userRole = Role::create([
'name' => 'user',
'display_name' => 'user',
'description' => 'user',
]);
$adminRole = Role::create([
'name' => 'admin',
'display_name' => 'admin',
'description' => 'admin',
]);
$defaultUser->attachRole($userRole); //zizaco-entrus RBAC package
$defaultAdmin->attachRole($adminRole);
}
только $defaultUser
seed (у меня есть событие, которое срабатывает после сохранения пользователя и отправки ему письма с подтверждением). Я получаю ошибку
В строке 269 StreamBuffer.php:
Не удалось установить соединение с хостом smtp.gmail.com
Мед № 110]
EDIT # 2: telnet smtp.gmail.com 587
не отвечает.
EDIT # 3: sudo ufw status
:
Status: active
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
587/tcp ALLOW Anywhere
465/tcp ALLOW Anywhere
22 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
21/tcp ALLOW Anywhere
587 ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
587/tcp (v6) ALLOW Anywhere (v6)
465/tcp (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
21/tcp (v6) ALLOW Anywhere (v6)
587 (v6) ALLOW Anywhere (v6)
EDIT # 4:
Мой новый ключ приложения Gmail, который я создал для этого проекта, до сих пор не используется.
Я старался этот ответ:
В строке AbstractSmtpTransport.php 419:
Ожидаемый код ответа 220, но получил код «», с сообщением «»
Также этот ответ не помогло
РЕДАКТИРОВАТЬ # 5: проверено разрешение SMTP на приборной панели сервера. Извините за беспокойство, ребята.
У меня есть опыт работы с серверами GoDaddy, которые ограничивают количество ретрансляторов, которые ваш сервер может отправлять в день.
Google Cloud Platform полностью запрещает отправку электронной почты, блокируя обычно используемые порты электронной почты SMTP. У них есть соглашения с поставщиками электронной почты saas для увеличения количества бесплатных писем, которые вы можете отправлять. Например, я использую mailgun и вместо того, чтобы отправлять только 10 000 электронных писем в месяц бесплатно, я могу отправить 30 000 электронных писем. Мне действительно нравится отправлять электронные письма таким образом, потому что они имеют более высокую доставляемость и позволяют нам легче отслеживать клики, отписки, просмотры и т. Д. Итог, я рекомендую подписаться на один из этих сервисов.
Я подозреваю, что Scaleway также ограничивает вас. По сути, любая облачная служба хостинга несет ответственность за электронную почту. Особенно на виртуальном хостинге 1 спамер может помечать нескольких пользователей на одном сервере и в одном регионе как спамеров, даже если они невиновны.
Других решений пока нет …