Bonsoir à tous !
J'ai découvert il y a peu le paquet SwiftMailer que j'ai ajouté à mon site internet sans trop de difficulté. Voici le code :
$transport = (new Swift_SmtpTransport('asmtp.mail.hostpoint.ch', 25))
->setUsername('XXXXXXXXXXXXXX')
->setPassword('XXXXXXXXXXXXXX');
$mailer = new Swift_Mailer($transport);
$player = NEW player;
$PlayersWithEmail = $player->AllWithEmail();
foreach($PlayersWithEmail as $p) {
$content_email = 'Bonjour !';
$message = (new Swift_Message($titre))
->setFrom(['noreply@site.ch' => 'Super site'])
->setTo([$p->email])
->setBody($content_email,'text/html')
;
if (!$mailer->send($message, $failures))
{
echo "Failures:";
print_r($failures);
}
}
Plutôt simple, c'est une boucle qui envoie un mail à tous les joueurs du site qui ont une adresse email. J'ai suivis la documentation officiel, cela me semble correct et ça fonctionne. Enfin presque !
En effet, les emails s'envoi bien sauf pour une personne : celui qui a une adresse outlook. Et du coup fatal Error et les joueurs qui suivent ne reçoivent pas l'email.
Voici l'erreur en question : (J'ai masqué l'email en question avec des ???)
Fatal error: Uncaught Swift_TransportException: Expected response code 354 but got code "503", with message "503-All RCPT commands were rejected with this error: 503-501 steve.stauffer@outlook.com=: malformed address: => may not follow <???.???@outlook.com 503 Valid RCPT command must precede DATA " in /Users/michael/Dropbox/GRIFFUR/Sites web/monsite.dev/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:457 Stack trace: #0 /Users/michael/Dropbox/GRIFFUR/Sites web/monsite.dev/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(341): Swift_Transport_AbstractSmtpTransport->assertResponseCode('503-All RCPT co...', Array) #1 /Users/michael/Dropbox/GRIFFUR/Sites web/monsite.dev/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php(305): Swift_Transport_AbstractSmtpTransport->executeCommand('DATA\r\n', Array, Array, false, NULL) #2 /Users/michael/Dropbox/GRIFFUR/Sites web/monsite.dev/vendor/swiftmailer/swift in /Users/michael/Dropbox/GRIFFUR/Sites web/monsite.dev/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 457
Comme c'est la première fois que j'utilise cette Class je suis un peu perdu... C'est pourtant une adresse valide que j'ai testé. Ce que je ne comprend pas c'est que ça marche pour tous les autres qui ont nottament des adresses hotmail, gmail ou encore icloud mais pas pour ce membre qui est le seul à avoir une adresse Outlook.
Je ne sais pas si c'est par rapport à la connexion "Transport", j'ai mis les informations de mon serveur ou est hébergé mon site à savoir Hostpoint en Suisse.
Autre point : comme vous le constater cette erreur arrête le script et par conséquent ne continue plus à envoyé les emails aux membres qui suivent. J'ai ajouté la condition en fin de script que j'ai trouvé dans la documentation mais pareil, Fatal Error. Comme il est possible par la suite que d'autre membre rejoigne le site je souhaiterai que si il y à une erreur pour quelqu'un que ce soit ignoré et que sa continue pour les autres evidemment. Enfin, le mieux ce serai qu'il n'y ai pas d'erreur du tout ! C'est tout de même bizarre pour l'adresse outlook...
Je vous remercie d'avance si vous pouvez m'aider !
Michael