无法使用 HostGator 中的邮件服务器和 Digital Ocean 中的网站向不同的域发送邮件(缺少发件人标题)

无法使用 HostGator 中的邮件服务器和 Digital Ocean 中的网站向不同的域发送邮件(缺少发件人标题)

最近我从带有 cPanel 的 HostGator 迁移到了 Digital Ocean droplet。

我仍然想使用 HostGator 的电子邮件服务。

因此,我在 DigitalOcean 中添加了指向 HostGator IP 的 A 记录和指向 mail.mydomain.com 的 MX 记录

我可以正常接收和发送电子邮件。

当我想从 Laravel 应用程序发送电子邮件时,除非它使用与我的网站相同的域,否则不会发送邮件,例如如果我想发送到 Gmail 帐户。

我尝试使用 telnet,在收件箱中我看到 gmail 拒绝该消息,因为它没有“发件人标题”。

迁移之前一切都运行正常,所以我认为不需要将该标题添加到我的 Laravel 电子邮件中。

我在 DNS 配置或 cPanel 中缺少什么吗?

这是我在迁移之前一直使用的代码,它运行良好,现在它会发送电子邮件,但只有当收件人与 HostGator 具有相同的域名(即 my-domain.com)时才会发送电子邮件:

MAIL_DRIVER=smtp
MAIL_HOST=cloud232.hostgator.com (I tried with mail.my-domain.com and it works too)
[email protected]
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl (I tried with tls and port=587 and it works too)
MAIL_FROM_NAME=name
MAIL_PORT=465 (I tried with tls and port=587 and it works too)

提前致谢。

答案1

您可以尝试添加 SPF 记录以允许 DigitalOcean IP 从您的域发送电子邮件。
您还可以尝试使用 HostGator 的 SMTP 服务器从 laravel 发送电子邮件。在我看来,除非您有第三方电子邮件解决方案,否则使用 SMTP 从 Web 应用程序发送电子邮件是最可靠、最简单的发送电子邮件的方式。
这是一个示例代码,您可以尝试将其放入邮件配置文件中:

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'mail.yourdomain.com'),
'port' => env('MAIL_PORT', 25),
'from' => ['address' => '[email protected]', 'name' => 'Some Name here'],
'encryption' => env('MAIL_ENCRYPTION', null),
'username' => env('[email protected]'),
'password' => env('yourpassword'),
'sendmail' => '/usr/sbin/sendmail -bs',


或者,您可以将这两行添加到 .env 文件中:

[email protected]
MAIL_FROM_NAME="[email protected]"

但这可能会导致您的电子邮件因 DKIM 故障和其他问题而进入垃圾邮件文件夹。因此,使用 SMTP 是最好的方法。

希望这可以帮助。

相关内容