Laravel + Swift Mailer: ошибка: нет действительных получателей - PullRequest
2 голосов
/ 10 января 2020

Примечание: это, к сожалению, не дубликат , я уже попробовал все упомянутое там.

Я попытался установить соединение с моим почтовым сервером с помощью Laravel/Swiftmailer. Раздел Mailing моего .env выглядит следующим образом:

MAIL_DRIVER=smtp
MAIL_HOST=<THE MAILHOST>
MAIL_PORT=465
MAIL_USERNAME=<THE USERNAME>
MAIL_PASSWORD=<THE PASSWORD>
MAIL_ENCRYPTION=ssl

Личная информация подвергается цензуре по очевидным причинам, но конфигурация работает. Я проверил это, подключившись к серверу с этой конфигурацией через Thunderbird, и он работает как шарм.

Вот где я называю Mailable:

   public function from_id(string $id): User
   {
         .
         .
         .
        Mail::to(<WORKING EMAIL ADRESS>)->send(new OrderShipped());
    }

Вот как выглядит Mailable (в основном это пример из laravel документов):

   public function build()
   {
      return $this->view('email_templates.simple_test');
   }

Я отлаживал в коде, и на самом деле было выброшено два исключения, хотя, к сожалению! отображает только последнее:

Ожидаемый код ответа 250/251/252, но получен код "554" с сообщением "554 5.7.1: Адрес получателя отклонен: доступ запрещен"

Ожидаемый код ответа 354, но получил код «554» с сообщением «554 5.5.1 Ошибка: нет действительных получателей»

Я попытался отправить письмо с отлично работающего почтового сервера через Thunderbird на <WORKING EMAIL ADRESS> и письмо было отправлено и получено за доли секунды и без проблем / ошибок. По сути, я попытался воспроизвести точно такой же сценарий с помощью другого инструмента. Так что, с моей точки зрения, ошибка должна быть в кодовой базе.

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

Ответы [ 3 ]

4 голосов
/ 14 января 2020

Кажется, что это ошибка SMTP, какой код ошибки вы получаете?

Код 354 : означает, что SMTP-сервер сообщает Laravel, что необходимо продолжить и отправить тело сообщения. электронная почта. Обратите внимание, что это именно то, что ожидается, а не то, что вы получили.

Код 554 : с сервера SMTP означает: «Сбой транзакции», и вы заметите, что это то, что вы фактически получено.

Причина, по которой это происходит, указывается далее в сообщении: «Ошибка: нет действительных получателей».

Без дополнительных данных будет трудно сказать, почему получатель не является Правильно установите на вашей кодовой базе.

Полный список кодов ошибок SMTP можно найти: https://sendgrid.com/blog/smtp-server-response-codes-explained/

0 голосов
/ 17 января 2020

Ваша установка выглядит немного странно для меня. Попробуйте использовать следующий синтаксис (обратите внимание, здесь я включил переменную $_orderObject в качестве заполнителя для представления деталей заказа):

app / Mail / OrderShipped. php

<?php

namespace App\Mail;

use Illuminate\Mail\Mailable;

class OrderShipped extends Mailable
{
    protected $_name;
    protected $_orderObject;

    public function __construct($name, $order)
    {
        $this->_name = $name;
        $this->_orderObject = $order
    }

    public function build ()
    {
        return $this->to (<CONFIRMED WORKING EMAIL>)
                    ->subject ('New Order!')
                    ->view ('email_templates.simple_test')
                    ->with ([
                       'name' => $this->_name,
                       'order' => $this->_orderObject
                    ]);
    }
}

// называем это

   public function from_id(string $id): User
   {
        $name = << $this->getUserNameById ($id) >> // fake method
        $orderObject = << $this->getLatestOrderByUserId($id) >> // fake method

        Mail::send(new OrderShipped($name, $orderObject));
    }
0 голосов
/ 16 января 2020

Вам нужно связаться с системным администратором, чтобы узнать, нужен ли вам STARTTLS или просто TLS.

STARTTLS запускает простое соединение, а затем переключается на безопасный канал TLS, TLS соединяется с защищенным соединением напрямую, но меньше совместимо.

если ответ STARTTLS, используйте порт 587, в противном случае сохраните ваш порт, но проверьте его с вашим системным администратором

другой причиной может быть то, что ваша учетная запись была заблокирована или ваш IP заблокирован

...