0

如何使用 Laravel 7 在 localhost 上测试电子邮件?我有一个 Smtp4Dev 服务器正在运行,它应该捕获指定端口上的通信。我选择端口 25。我的 Laravel 7 邮件设置如下:

.env

MAIL_MAILER=smtp
MAIL_HOST=xxxxxxxxxx.contaboserver.net
MAIL_PORT=25
MAIL_USERNAME="noreplay@xxxxxxxxx.eu"
MAIL_PASSWORD="xxxxxxxxx"
MAIL_ENCRYPTION=
MAIL_FROM_ADDRESS="noreplay@xxxxxxxxx.eu"
MAIL_FROM_NAME="${APP_NAME}"

配置/邮件.php

'smtp' => [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST'),
    'port' => env('MAIL_PORT'),
    'encryption' => env('MAIL_ENCRYPTION'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'timeout' => null,
    'auth_mode' => null,
    'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ],
],

使用这些设置我收到一个错误:

无法使用 3 个可能的身份验证器在用户名“noreplay@xxxxxxxxx.eu”的 SMTP 服务器上进行身份验证。Authenticator CRAM-MD5 返回预期的响应代码 235,但得到代码“535”,消息“535 5.7.0 Invalid login or password”。Authenticator LOGIN 返回了预期的响应代码 250,但得到了一个空响应。

如果我删除

'stream' => [
    'ssl' => [
        'allow_self_signed' => true,
        'verify_peer' => false,
        'verify_peer_name' => false,
    ],
],

我收到一个错误

stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败

我也跑artisan config:clear。我不知道我现在该怎么办。为什么本地 Smtp4dev 服务器需要身份验证?

4

2 回答 2

0

尝试更改您的 MAIL_ENCRYPTION= 与

MAIL_ENCRYPTION=ssl

并运行

php artisan config:clear

如果您没有使用虚拟主机,或者在转储 .MAIL_ENCRYPTION 密钥后获得空值,请重新加载您的工匠服务或您的 xampp

于 2021-06-04T16:51:03.443 回答
0

使用 Laravel 6.x、7.x 和 8.x

建议在默认 tls 上使用 SSL。

大多数共享托管服务提供商使用 SSL 签署电子邮件,因此请编辑您的 .env 文件以获取此信息

MAIL_ENCRYPTION=ssl
于 2021-06-03T09:18:18.120 回答