Недавно я перешел с 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 - лучший путь вперед.
Надеюсь это поможет.