Laravel ZOHO SMTP 电子邮件无法通过身份验证

Posted

技术标签:

【中文标题】Laravel ZOHO SMTP 电子邮件无法通过身份验证【英文标题】:Laravel ZOHO SMTP Email failed to authenticate 【发布时间】:2021-12-28 19:10:06 【问题描述】:

我正在使用 Zoho SMTP 配置

DEFAULT_MAIL="gmail"
MAIL_MAILER=smtp
MAIL_HOST=smtp.zoho.com
MAIL_PORT=587
MAIL_USERNAME=ses@imksa.com
MAIL_PASSWORD=mina
MAIL_ENCRYPTION=ssl
MAIL_FROM_NAME=Test Sales

当我在 MAIL_FROM_NAME 中提供空间时,没有报价的“测试销售”网站出现故障 但邮件发送成功

我也试过用引号

DEFAULT_MAIL="gmail"
MAIL_MAILER=smtp
MAIL_HOST=smtp.zoho.com
MAIL_PORT=587
MAIL_USERNAME=ses@imksa.com
MAIL_PASSWORD=mina
MAIL_ENCRYPTION=ssl
MAIL_FROM_NAME="Test Sales"

我收到以下错误消息

Connection could not be established with host smtp.zoho.com :stream_socket_client(): unable to connect to ssl://smtp.zoho.com:587 (Connection refused)

在 zoho 邮件配置中,他们设置了 FirstName=Test 和 LastName=Sales

邮件无法正常工作只是因为 MAIL_FROM_NAME。

谁能给我建议

【问题讨论】:

“连接被拒绝”是一个非常明确的消息,与您的配置无关。 【参考方案1】:

你有两个问题。错误使用 SSL/STARTTLS 以及错误使用邮件地址和名称。

Zoho 支持 SSL 和 STARTTLS。

您正在指定 ssl,但使用的是 starttls 端口。 ssl 方案以加密开始。这通常需要端口 465。方案 tls 开始时未加密,然后通过 STARTTLS 命令切换到加密。这通常需要端口 587。

Email encryption

使用 SSL:

MAIL_PORT=465
MAIL_ENCRYPTION=ssl

使用 STARTTLS:

MAIL_PORT=587
MAIL_ENCRYPTION=tls

电子邮件地址和姓名用法:

使用 MAIL_FROM_ADDRESS=someone@example.com

您可以将 MAIL_FROM_ADDRESSMAIL_FROM_NAME

结合使用
"MAIL_FROM_NAME <MAIL_FROM_ADDRES>"

将变量名称替换为 .env 文件中的值:

$from = env('MAIL_FROM_NAME) . " <" . env(MAIL_FROM_ADDRESS) . ">";

一些类方法使用这种风格:

->setFrom([env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME')])

注意:某些电子邮件服务不允许您更改MAIL_FROM_ADDRESS。您必须使用为该帐户注册的那个或注册的别名。

您也可以在 config/mail.php 中指定来自地址的详细信息:

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

【讨论】:

以上是关于Laravel ZOHO SMTP 电子邮件无法通过身份验证的主要内容,如果未能解决你的问题,请参考以下文章

通过 Zoho SMTP 发送电子邮件

带有 NodeMailer 的 Zoho 不工作错误代码:“EDNS”

Laravel 发送电子邮件 SMTP

Laravel 邮件参数(sendmail/smtp)

应用程序运行时在后台使用 SMTP Mailcore2 发送邮件

Linux搭建smtp服务器+laravel5.2发邮件配置