无法发送电子邮件Laravel

时间:2018-01-29 22:27:42

标签: php ubuntu-16.04 gmail-api laravel-5.5 apache2.4

我尝试在用户注册后发送电子邮件,但收到错误:

  

无法与主机smtp.gmail.com建立连接[连接超时#110]

我正在使用Ubuntu 16.04服务器。 localhost上的一切都很好 命令

openssl s_client -connect google.com:443 -tls1_2

返回OK,所以我想打开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种子(我有一个事件在用户存储后触发并向他发送验证邮件)。我收到错误

  

在StreamBuffer.php第269行:

无法与主机smtp.gmail.com建立连接[连接ti   med out#110]

编辑#2:telnet smtp.gmail.com 587没有回复。

编辑#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应用程序密钥仍未使用。

我尝试了this answer

  

在AbstractSmtpTransport.php第419行:
  预期的响应代码220,但得到了代码"",带有消息""

this answer也没有帮助。

编辑#5:检查服务器仪表板上的smtp权限。抱歉打扰了他们。

1 个答案:

答案 0 :(得分:0)

我有使用GoDaddy服务器的经验,这些服务器限制了服务器每天可以发送的中继数量。

Google Cloud Platform禁止通过阻止常用的SMTP电子邮件端口来完全发送电子邮件。他们确实与saas电子邮件提供商达成协议,以增加您可以发送的免费电子邮件的数量。例如,我使用mailgun而不是每月免费发送10,000封电子邮件,我可以发送30,000封电子邮件。我非常喜欢以这种方式发送电子邮件,因为它们具有更高的可传递性,并且允许我们更轻松地跟踪点击次数,取消订阅次数,观看次数等。最重要的是,我建议订阅其中一项服务。

我怀疑Scaleway也限制了你。基本上,任何云服务器托管服务都有电子邮件的责任。特别是对于共享主机1,垃圾邮件发送者可以在同一服务器和区域内标记多个用户,即使他们可能是无辜的。