使用 smtp 服务器发送自定义电子邮件地址时 Laravel 错误

Posted

技术标签:

【中文标题】使用 smtp 服务器发送自定义电子邮件地址时 Laravel 错误【英文标题】:Laravel error when sending custom email address using smtp server 【发布时间】:2020-03-26 15:26:44 【问题描述】:

我有一个项目,它有一个从请求发送电子邮件的模块。我使用 beautymail 包作为电子邮件模板。我可以使用 gmail 帐户发送电子邮件,但是我从我的客户那里收到这封电子邮件,其中包含客户电子邮件地址。像这个xx.xxxxx@propnex.sg,他们说邮件是smtp服务器。所以我尝试在 laravel 中配置我的.env 和其他配置文件。但是我在发送Connection could not be established with host mail.propnex.sg :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:1408F10B:SSL routines:ssl3_get_record:wrong version number 时收到此错误有人可以告诉我为什么我收到此错误以及我应该怎么做才能摆脱这个错误?非常感谢

.env 配置

MAIL_DRIVER=smtp
MAIL_HOST=mail.propnex.sg
MAIL_PORT=587
MAIL_USERNAME=xx.xxxxx@propnex.sg
MAIL_PASSWORD=xxxxxxxx
MAIL_ENCRYPTION=ssl

邮件.php

   'from' => [
        'address' => 'xx.xxxxx@propnex.sg',
        'name' => 'Propnex',
    ],

    'reply_to' => ['address' => 'xx.xxxxx@propnex.sg', 'name' => 'Propnex'],

    'encryption' => env('MAIL_ENCRYPTION', 'tls'),


    'username' => env('MAIL_USERNAME'),

    'password' => env('MAIL_PASSWORD'),

    'port' => env('MAIL_PORT', 587),

    'driver' => env('MAIL_DRIVER', 'smtp'),

    'host' => env('MAIL_HOST', 'mail.propnex.sg'),

【问题讨论】:

【参考方案1】:

我只是通过像这样在我的 .env 和 mail.php 文件中进行一些小的更改来解决它

MAIL_ENCRYPTION=""
'encryption' => env('MAIL_ENCRYPTION', ''),

告诉我这个不安全/替代答案的缺点是什么。我想要反馈。非常感谢。

【讨论】:

对我来说是将 MAIL_ENCRYPTION 从 ssl 更改为 tls【参考方案2】:

您使用的是 SSL (MAIL_ENCRYPTION=ssl),因此您需要在 .env 文件中更改 MAIL_PORT=465。

【讨论】:

【参考方案3】:

SSL 与 TLS 加密

对于 TLS 使用端口:587 SSL 使用端口:465

【讨论】:

【参考方案4】:

您可能已经检查了您拥有的每一行。问题在于 mailtrap.io 它本身。如果你的配置实际上是下面这样。

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=31466861b7bXXX
MAIL_PASSWORD=fe2b6503618XXX
MAIL_ENCRYPTION=null

我用两个独立的框架进行了测试以证明这个错误。检查 SMTP 凭据尝试重置凭据。

【讨论】:

【参考方案5】:
You are setting mail encryption as tls in mail.php and on the other hand in the env file
you are setting it to ssl. Try setting it the same in both the files.

But i would recommend that you skip the certificate.
You can skip verification of the ssl certificate by using the code below in the mail.php file:

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

【讨论】:

以上是关于使用 smtp 服务器发送自定义电子邮件地址时 Laravel 错误的主要内容,如果未能解决你的问题,请参考以下文章

在添加附件时尝试通过不同的 smtp 服务发送电子邮件

使用没有自定义域的 AWS SES 发送电子邮件

腾讯云服务器使用smtp发送邮件

zabbix设置邮件发送报警

织梦自定义表单发送邮件超简单版(支持QQ邮箱163邮箱)

SMTP lib 从哪个 IP 地址发送电子邮件?