Назад | Перейти на главную страницу

Невозможно отправлять письма в другой домен с почтовым сервером в HostGator и веб-сайтом в Digital Ocean (отсутствует заголовок From)

Недавно я перешел с HostGator с cPanel на каплю Digital Ocean.

Я все еще хочу использовать почтовый сервис от HostGator.

Итак, в DigitalOcean я добавил запись A, указывающую на IP-адрес HostGator, и запись MX, указывающую на mail.mydomain.com.

Я могу получать и отправлять электронные письма в обычном режиме.

Когда я хочу отправить электронное письмо из приложения 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)
MAIL_USERNAME=noreply@my-domain.com
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)

Заранее спасибо.

Вы можете попробовать добавить запись SPF, чтобы IP-адрес DigitalOcean мог отправлять электронные письма из вашего домена.
Вы также можете попробовать отправлять электронные письма из laravel с помощью SMTP-сервера HostGator. На мой взгляд, использование SMTP для отправки писем из веб-приложения - самый надежный и простой способ отправки писем, если у вас нет стороннего почтового решения.
Это пример кода, который вы можете попробовать поместить в файл конфигурации почты:

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


В качестве альтернативы вы можете добавить эти две строки в свой .env файл:

MAIL_FROM_ADDRESS=yourname@yourdomain.com
MAIL_FROM_NAME="yourname@yourdomain.com"

Но это может привести к тому, что ваши электронные письма попадут в папку спама из-за сбоев DKIM и других проблем. Так что использование SMTP - лучший путь вперед.

Надеюсь это поможет.