
在使用 Zoho SMTP 服务时,最常见的错误之一是加密协议(MAIL_ENCRYPTION)与端口(MAIL_PORT)的不匹配。Zoho 支持两种主要的加密方式:SSL 和 STARTTLS,它们各自对应不同的标准端口。正确配置这两者是建立稳定连接的关键。
SSL (Secure Sockets Layer): 这是一种在连接建立之初就进行加密的协议。通常,SSL 加密对应的端口是 465。
MAIL_MAILER=smtp MAIL_HOST=smtp.zoho.com MAIL_PORT=465 MAIL_ENCRYPTION=ssl MAIL_USERNAME="your_email@zoho.com" MAIL_PASSWORD="your_password" MAIL_FROM_ADDRESS="your_email@zoho.com" MAIL_FROM_NAME="Your Application Name"
STARTTLS (Opportunistic TLS): 这种方式首先建立一个未加密的连接,然后通过 STARTTLS 命令升级为加密连接。STARTTLS 通常使用的端口是 587。
MAIL_MAILER=smtp MAIL_HOST=smtp.zoho.com MAIL_PORT=587 MAIL_ENCRYPTION=tls MAIL_USERNAME="your_email@zoho.com" MAIL_PASSWORD="your_password" MAIL_FROM_ADDRESS="your_email@zoho.com" MAIL_FROM_NAME="Your Application Name"
注意事项: 如果将 MAIL_ENCRYPTION=ssl 与 MAIL_PORT=587 结合使用,或者将 MAIL_ENCRYPTION=tls 与 MAIL_PORT=465 结合使用,都可能导致“Connection refused”(连接拒绝)错误。这是因为服务器期望的加密握手方式与客户端发起的不同,导致连接无法正常建立。请务必根据所选加密协议配置正确的端口。
另一个常见的配置问题是发件人地址 (MAIL_FROM_ADDRESS) 和发件人名称 (MAIL_FROM_NAME) 的设置。不正确的格式或值可能导致邮件发送失败、邮件被拒绝或在接收端显示异常。
在 .env 文件中配置:
MAIL_FROM_ADDRESS="your_email@zoho.com" MAIL_FROM_NAME="Test Sales"
在 Laravel 代码中组合使用发件人信息:
在发送邮件时,Laravel 的邮件类提供了灵活的方式来设置发件人信息。建议使用其内置方法,而不是手动拼接字符串。
// 示例:使用 Laravel Mailable 类设置发件人
use Illuminate\Support\Facades\Mail;
use Illuminate\Mail\Mailable;
class TestEmail extends Mailable
{
public function build()
{
return $this->from(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME'))
->subject('测试邮件')
->view('emails.test'); // 假设您有一个邮件视图
}
}
// 在控制器或其他地方发送邮件
Mail::to('recipient@example.com')->send(new TestEmail());
// 或者,如果直接操作底层邮件消息对象,例如在自定义邮件发送器中
// $message->setFrom([env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME')]);为了提供一个全局的默认发件人配置,您可以在 config/mail.php 文件中进行设置。这在 .env 文件中的变量缺失时提供了一个回退选项,并确保了应用程序范围内的一致性。
// config/mail.php
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), // 默认地址
'name' => env('MAIL_FROM_NAME', 'Example App'), // 默认名称
],重要提示:MAIL_FROM_ADDRESS 的值应与您在 Zoho SMTP 账户中配置的发送邮箱一致。如果使用未经授权的地址,邮件可能会被拒绝发送,或者即使发送成功,也可能被接收方的邮件服务标记为垃圾邮件。
正确配置 Laravel 应用与 Zoho SMTP 服务是确保邮件功能稳定运行的基础。核心在于确保 MAIL_ENCRYPTION 与 MAIL_PORT 匹配,并规范使用 MAIL_FROM_ADDRESS 和 MAIL_FROM_NAME。通过遵循本指南中的详细建议和示例代码,您可以有效避免常见的连接问题和邮件发送错误,从而让您的 Laravel 应用能够稳定可靠地发送邮件。在遇到问题时,仔细检查 .env 文件中的配置项,并确保与 Zoho 的官方 SMTP 设置保持一致,通常能解决大部分疑难杂症。
以上就是Laravel Zoho SMTP 配置指南:解决连接拒绝与发件人设置错误的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号