Как мы решаем ошибку 554 5.5.1 (без действительных получателей) при использовании PHP Swiftmailer? - PullRequest
0 голосов
/ 10 февраля 2019

При тестировании нашего почтового сервера мы наткнулись на ошибку, которая не позволяет нам отправлять почту через PHP, хотя регулярная отправка / получение по почте в почтовом ящике работает без каких-либо проблем.У нас работает отдельный сервер Ubuntu 18.04, на котором есть только Mail-in-a-box со всеми необходимыми компонентами.

Вывод в текстовом файле error.log

Неустранимая ошибка PHP: Uncaught Swift_TransportException: ожидаемый код ответа 354, но получил код "554", с сообщением "554 5.5.1 Ошибка: нет действительных получателей \ r \ n"

PHP-файл

$request_email = $_POST['request-email'];
$request_name = $_POST['request-name'];
$request_text = $_POST['request-text'];

$transport = (new Swift_SmtpTransport('data.abc.xy', 587, 'tls'))
    ->setUsername('contact@abc.xy')
    ->setPassword('*******')
    ->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false)));

$mailer = (new Swift_Mailer($transport));

$message = (new Swift_Message('Name: '. $request_name))
    ->setFrom(['' . $request_email => '' . $request_name])
    ->setTo(['contact@abc.xy'])
    ->setBody('E-Mail: ' . $request_email . $request_text)
    ->setContentType("text/html");

$result = $mailer->send($message);

Мы попытались переустановить все компоненты Mail-in-a-box и все компоненты и проверитьвсе для орфографических ошибок.Ricipient существует на нашем почтовом сервере и может получать и отправлять почту вручную через клиента.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Я решил эту ошибку (554), просто добавив в laravel (файл .env) эти 2 строки:

MAIL_FROM_ADDRESS=you@email.com
MAIL_FROM_NAME="you@email.com"

После этого запустите эту команду для очистки конфигурации почтового кэша:

php artisan config:cache
0 голосов
/ 10 февраля 2019

Ошибка 554 5.5.1 - это ошибка SMTP " нет действительных получателей ".Это может произойти, если вы неправильно написали адреса получателей, но также может произойти, если вы не проходите надлежащую аутентификацию на исходящем сервере.

Итак, проблема в том, что abc.xy не является зарегистрированным доменом, поэтому вы не можете отправить электронное письмо на этот адрес.Я думаю, что это не связано с вашим кодом.

Вы можете поймать ошибку Swift_TransportException и обработать ее в своей собственной кодовой базе, например:

try {
    $result = $mailer->send($message);
} 
catch (Swift_TransportException $e) {
    echo $e->getMessage();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...