Liens:
Swift Mailer est déjà inclus dans les dépendances du projet :
{ "require": { "symfony/swiftmailer-bundle": "^3.1", } }
Si ce n'est pas le cas, faire ceci :
composer require symfony/swiftmailer-bundle
La configuration se fait via la variable MAILER_URL dans le fichier .env.
Par exemple celui de Skynet, qui ne requiert aucune authentification :
MAILER_URL=smtp://smtp.skynet.be:25?encryption=&auth_mode=
Pour que cela fonctionne il faut aller dans les paramètres du compte Gmail, dans la section Sécurité et activer Accès moins sécurisé des applications.
# Remplacer [ADRESSE-GMAIL] par l'adresse Gmail COMPLÈTE (nom@gmail.com) # Remplacer [MOT-DE-PASSE] par le mot de passe de ce compte Gmail MAILER_URL=smtp://smtp.gmail.com:465?encryption=ssl&auth_mode=login&username=[ADRESSE-GMAIL]&password=[MOT-DE-PASSE]
use \Swift_Mailer; use \Swift_Message; use \Swift_Attachment;
Dans une fonction d'un contrôleur :
public function index(Request $request, \Swift_Mailer $mailer) { $message = (new \Swift_Message()) ->setSubject('Sujet du message') ->setFrom(['envoyeur@mail.com' => 'Nom Envoyeur']) ->setTo('destinataire_1@mail.com') ->setBody( "Texte du message", 'text/plain' ); $mailer->send($message); }
À partir d'un template Twig au format TXT :
->setBody( $this->renderView( // templates/hello/email.txt.twig 'hello/email.txt.twig', ['name' => $name] ), 'text/plain' )
Et un template au format HTML :
->setBody( $this->renderView( // templates/hello/email.html.twig 'hello/email.html.twig', ['name' => $name] ), 'text/html' )
Attacher un fichier au message ( attention à la limite de taille ) :
->attach(Swift_Attachment::fromPath('my-document.pdf'))
Pour constater le succès ou l'échec de l'envoi : la méthode send retourne le nombre d'emails envoyés.
if($mailer->send($message) > 0) { // L'email a bien été envoyé } else { // L'email n'a pas été envoyé }