Création d'un service pour l'envoi d'email via le smtp de Gmail

29 11 2016

Création d'un service pour l'envoi d'email via le smtp de Gmail

Pour gérer l'envoi d'email avec Symfony2, plusieurs solutions sont possibles:

  • utiliser la fonction mail de son hébergeur
  • utiliser le smtp de sa boîte de messagerie

Gmail

Pourquoi utiliser Gmail plutôt qu'une autre boîte de messagerie comme Yahoo? Il est prouvé que Gmail ne classe pas les emails venant d'un serveur en spam. Au contraire Yahoo classe certains emails aléatoirement dans le dossier spam.

Nous allons ici décrire le fonctionnement de l'envoi d'email avec le smtp de Gmail sous Symfony. Nous allons mettre à jour le fichier Config.yml comme ceci:

transport: smtp

encryption: ssl

auth_mode: login

host: smtp.gmail.com

user: monemail@gmail.com

password: monmdp

spool: { type: memory }

 

Ensuite nous allons appeler un service dans le contrôleur:

$this->container->get('EmailMerci')->emailMerci($commande);

 

Et nous allons déclarer le service dans le fichier Services.yml:

EmailMerci:

    class: Ecommerce\EcommerceBundle\Services\

EmailMerci

    arguments : [@service_container]

 

Et nous allons créer le service EmailMerci en passant des paramètres à la vue:

class EmailMerci {

    public function __construct(ContainerInterface $container) {

        $this->container = $container;

}

public function emailMerci($commande) {

    $message = \Swift_Message::newInstance()

    ->setSubject('Validation de votre commande')

    ->setFrom(array('service@web-city.fr' => "Web-City.fr"))

    ->setTo($commande->getUtilisateur()->getEmailCanonical()) ->setCharset('utf-8')

    ->setContentType('text/html')

    ->setBody($this->container->get('templating')

    ->render('EcommerceBundle:SwiftLayout:

validationCommande.html.twig',

array('utilisateur' => $commande->getUtilisateur())));

    $this->container->get('mailer')->send($message);

} }


 catégorie: Symfony



Laisser un commentaire