Добрый день,
Перечисленный ниже ход действий тестировал на локальной машине и на
VPS хостинге с настроенный
DNS. И там и там без
ssl сертификата (only
http://)
Во первых - конфигурация
Laravel, варианты, которые почередно пробовал:
1)
Mail.ru
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mail.ru
MAIL_PORT=465
MAIL_USERNAME=secret_login@mail.ru
MAIL_PASSWORD=secret_pass
MAIL_ENCRYPTION=tls
2)
Gmail
#MAIL_DRIVER=smtp
#MAIL_HOST=smtp.gmail.com
#MAIL_PORT=587
#MAIL_USERNAME=secret_login@gmail.com
#MAIL_PASSWORD=secret_pass
#MAIL_ENCRYPTION=ssl
3)
Mailtrap
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=secret_login
MAIL_PASSWORD=secret_pass
MAIL_ENCRYPTION=null
Тестировал так - поочередно раскоменчивал каждую секцию и запускал тесты. Например:
class MailRuTest extends TestCase
{
protected $mailer;
protected $mail_host = 'smtp.mail.ru';
protected $mail_port = 465;
protected $mail_username = '{secret_login}@mail.ru';
protected $mail_password = '{secret_pass}';
protected $mail_encryption = 'tls';
protected $msg_from = 'secret_login@mail.ru';
protected $msg_author = 'author_name';
protected $msg_subject = 'Message From to car sharing system - system_name';
protected $msg_to = 'customer_name@mail.ru';
public function setUp()
{
parent::setUp();
$this->mailer = $this->app->make(MailerInterface::class);
}
public function testSend()
{
$this->assertTrue(true);
$this->mailer->raw('Hi, welcome user! ' . date('Y-m-d H:s') . ' - mail_service_name', function ($message) {
$message->to($this->msg_to)
->from($this->msg_from, $this->msg_author)
->subject($this->msg_subject);
});
}
public function testAuth()
{
try{
$transport = new Swift_SmtpTransport($this->mail_host, $this->mail_port, $this->mail_encryption);
$transport->setUsername($this->mail_username);
$transport->setPassword($this->mail_password);
$mailer = new Swift_Mailer($transport);
$mailer->getTransport()->start();
// $this->expectOutputString('Good mailtrap auth');
$this->assertTrue(true);
} catch (Swift_TransportException $e) {
fwrite(STDERR, print_r($this->mail_host. ': '.$e->getMessage() . ' - ' . $this->mail_host, TRUE));
return $e->getMessage();
} catch (\Exception $e) {
fwrite(STDERR, print_r($this->mail_host. ': '.$e->getMessage() . ' - ' . $this->mail_host, TRUE));
return $e->getMessage();
}
$this->assertTrue(true);
}
}
Во всех трех тестах в
protected свойства просто продублировал параметры из
.env
Т.е. в файлах
GmailTest.php,
MailRuTest.php,
MailtrapTest.php
производится попытка стукнуться на smtp сервер и отправить сообщение.
В итоге:
Ошибок не получаю (если езменять пароли например, то в
Exception честно попадаю), но и письма не отправляются.
Единственное, почему то кабинете у mailtrap.io видно, что исходящие были, но на почте получателя почта неприходит даже в спам. Да и для тестов больше этот mailtrap, как я понял.
Для
gmail пробовал след проделать:
1) gmail->Настройки->Пересылка и POP/IMAP->IMAP == on
2) Активировал: Небезопасные приложения разрешены по адресу:
https://myaccount.google.com/lesssecureapps
Для mail.ru - там почта для бизнеса
Настроили MX записи и получил письма:
Настроена подпись DKIM на домене {domen}.{com}
Почта для домена подключена!
Результат одинаков на лоокальной и на
VPS. SSl сертификат нигде не установлен, если это важно. Посоветуйте пожалуйста что я делаю не так.