【问题标题】:Why am I unable to send mail using laravel 8 gmail smtp? [duplicate]为什么我无法使用 laravel 8 gmail smtp 发送邮件? [复制]
【发布时间】:2021-04-06 09:14:24
【问题描述】:

我正在尝试在输入配置后使用 Gmail SMTP 从我的本地主机 laravel 8 应用程序发送邮件,但不断收到

Swift_TransportException
Connection could not be established with host smtp.gmail.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

我在我的 gmail 上打开了不太安全的应用程序设置,甚至下载了 cacert.pem 并将该位置添加到我的 php.ini 中,但它只是在提交表单后继续加载,然后给我上述错误。我需要做什么才能让它工作?

这是我的相关 .env 文件设置

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=mygmailaddress
MAIL_PASSWORD=******
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=mygmailaddress
MAIL_FROM_NAME="${APP_NAME}"

ma​​il.php

'default' => env('MAIL_MAILER', 'smtp'),

    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port' => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'auth_mode' => null,
        ],

        'ses' => [
            'transport' => 'ses',
        ],

        'mailgun' => [
            'transport' => 'mailgun',
        ],

        'postmark' => [
            'transport' => 'postmark',
        ],

        'sendmail' => [
            'transport' => 'sendmail',
            'path' => '/usr/sbin/sendmail -bs',
        ],

        'log' => [
            'transport' => 'log',
            'channel' => env('MAIL_LOG_CHANNEL'),
        ],

        'array' => [
            'transport' => 'array',
        ],
    ],

    
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],


    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],

];

php.ini

openssl.cafile=C:\wamp64\ssl\cacert.pem
openssl.capath=C:\wamp64\ssl

也许我应该更改我的 mail.php 文件中的某些内容?还是应该只存在 php.ini 中的一个字段? 我尝试将mail.php 中的smtp 邮件主机、端口和加密分别更改为smtp.gmail.com、465 和ssl,但这也不起作用。将 .env 端口更改为 587 和加密 TLS 也没有。我错过了什么?请帮忙。

虽然对 Laravel 还很陌生,但请多多关照,哈哈。

【问题讨论】:

  • 该错误清楚地表明您的证书存储设置不正确,因此无法正确验证主机名。更改 CA 捆绑包位置后是否重新启动了 PHP 服务器?
  • 你在 php.ini 中添加的位置在哪里?
  • @miken32 是的,我后来重新启动了它,但仍然遇到同样的错误。涉及的行如下所示:openssl.cafile=C:\wamp64\ssl\cacert.pem
  • 您从哪里获得 CA 捆绑包? phpinfo() 通过您的 Web 服务器的输出是否确认配置设置的更改?
  • @miken32 这是我在一月份早些时候从旧设备上下载回来的。我在哪里可以获得更新的 CA 捆绑包?是的,phpinfo() 显示了我输入的 cacert.pem 的位置。

标签: php laravel ssl smtp laravel-8


【解决方案1】:

您可以尝试更改 MAIL_PORT=587 吗?之后,您需要将您的帐户中的权限授予Less secure apps.

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 2014-09-13
    • 1970-01-01
    • 2018-09-13
    • 2011-08-14
    • 2015-06-29
    • 2018-09-01
    • 2015-07-25
    • 2021-07-06
    相关资源
    最近更新 更多