web-dev-qa-db-fra.com

Comment résoudre l'erreur 554 5.5.1 (aucun destinataire valide) lors de l'utilisation de PHP Swiftmailer?

Lors du test de notre serveur de messagerie, nous sommes tombés sur une erreur qui nous empêche d'envoyer des mails via PHP, bien que l'envoi/la réception régulière par Mail-in-a-box fonctionne sans aucun problème. Nous exécutons un serveur Ubuntu 18.04 distinct qui n'a que Mail-in-a-box avec tous ses composants nécessaires en cours d'exécution.

Sortie dans le fichier texte error.log

PHP Fatal error: Uncaught Swift_TransportException: code de réponse attendu 354 mais code obtenu "554", avec le message "554 5.5.1 Erreur: aucun destinataire valide\r\n"

Fichier 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('[email protected]')
    ->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(['[email protected]'])
    ->setBody('E-Mail: ' . $request_email . $request_text)
    ->setContentType("text/html");

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

Ce que nous avons essayé, c'est de réinstaller tout Mail-in-a-box et tous les composants et de tout vérifier les fautes d'orthographe. Le client existe sur notre serveur de messagerie et peut recevoir et envoyer des mails manuellement via le client.

3
Calendula

J'ai résolu cette erreur (554) en ajoutant simplement à laravel (fichier .env) ces 2 lignes:

[email protected]
MAIL_FROM_NAME="[email protected]"

Après cela, exécutez cette commande pour vider la configuration du cache de messagerie:

php artisan config:cache
11
gtamborero

L'erreur 554 5.5.1 est l'erreur SMTP "pas de destinataires valides". Cela peut se produire si vous avez mal orthographié les adresses des destinataires, mais cela peut également se produire si vous ne vous authentifiez pas correctement auprès du serveur sortant.

Le problème est donc que abc.xy n'est pas un domaine enregistré, vous ne pouvez donc pas envoyer d'e-mail à cette adresse. Je pense que ce n'est pas quelque chose lié à votre code.

Vous pouvez attraper le Swift_TransportException erreur et gérez-le dans votre propre base de code comme:

try {
    $result = $mailer->send($message);
} 
catch (Swift_TransportException $e) {
    echo $e->getMessage();
}
3
Amine KOUIS