Concernant le mailing de l’application Laravel que vous développez, plusieurs choix s’offrent à vous. Dans ce tutoriel, nous allons voir comment configurer Laravel pour pouvoir envoyer des e-mails depuis votre compte Gmail.
Prérequis
- Premièrement, il vous faut un compte Gmail (je parie que vous vous en doutiez).
- Il vous faut aussi une installation de Laravel (on fait très fort dans la difficulté aujourd’hui).
Le fichier de configuration
Personnellement, j’utilise Gmail uniquement pour tester le mailing en phase de développement de mes projets. Nous allons donc éditer un nouveau fichier, que nous placerons dans le dossier ‘app/config/local’. Et ce, de manière à ce que celui-ci soit uniquement actif lorsqu’on travaille avec le serveur local.
Créons le fichier ‘mail.php’, dans le dossier ‘app/config/local/’.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php return [ // plusieurs options possibles, dans notre cas c'est smtp 'driver' => 'smtp', // pointer vers le smtp de gmail 'host' => 'smtp.gmail.com', // le port par défaut est 587 'port' => 587, // l'adresse que vous souhaitez utiliser et le nom à afficher 'from' => [ 'address' => 'info@developpeurphp.be', 'name' => 'Mon Beau Site' ], // le protocole de cryptage 'encryption' => 'tls', // votre adresse de compte gmail 'username' => 'votrecompte@gmail.com', // le mot de passe correspondant à ce compte 'password' => 'mot_de_passe_google', // sans importance 'sendmail' => '/usr/sbin/sendmail -bs', // on ne fait pas semblant d'envoyer les emails 'pretend' => false, ]; |
Juste un commentaire supplémentaire sur la clé ‘from’ de notre tableau de configuration. Dans mon cas, j’ai demandé à ce que l’adresse info@developpeurphp.be soit utilisée. Si vous souhaitez comme moi utiliser une adresse autre que votre adresse Gmail par défaut, vous devez l’ajouter aux boites mails gérés par votre Gmail. Sinon, vous aurez beau essayer, l’expéditeur restera identifié avec votre boite Gmail de base.
Les mots de passe d’application
En ce qui me concerne, je n’aime pas que le mot de passe d’accès général à mon compte Google se retrouve dans ce fichier de configuration. Non pas que je sois parano, mais si on peut éviter d’avoir à faire ça, j’aime autant en profiter! Google a encore une fois pensé à tout, en nous proposant les mots de passe d’application. Voyons ensemble comment en créer un.
1. Vous connecter à votre compte Google +
Une fois connecté, rendez-vous sur la page suivante et cliquez sur l’onglet sécurité.
2. Créer le mot de passe d’application
Dans “Mot de passe”, cliquez sur le lien “Paramètres” du libellé “Mots de passe d’application”.
Il vous sera ensuite demandé de retaper votre mot de passe Google.
Enfin, sur la page suivante, cliquez sur le déroulant “Sélectionner une application” et choisissez “Autre”. Vous n’avez plus qu’à donner un nom à votre mot de passe pour l’identifier facilement. Votre nouveau mot de passe d’application fraîchement généré s’affichera. Ci-dessous, une série de captures d’écran illustrant tout ça.
- Mot de passe d’application – Paramètres
- Mot de passe d’application – Ajouter
- Mot de passe d’application – Généré
Notez qu’il est possible de révoquer à tout moment votre mot de passe d’application. Ceci aura pour effet de le supprimer et donc, de le rendre inutilisable…
Mise à jour du fichier mail.php
Après avoir fait tout ceci, vous n’aurez plus qu’à remplacer le mot de passe dans votre fichier mail.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php return [ 'driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => [ 'address' => 'votreadresse@votresite.com', 'name' => 'Mon Beau Site' ], 'encryption' => 'tls', 'username' => 'votrecompte@gmail.com', // Ce qui était avant : //'password' => 'mot_de_passe_google', // devient : 'password' => 'votre_mot_de_passe_d_application', 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => false, ]; |
Tester le fonctionnement de Gmail
Il ne nous reste plus qu’à vérifier que tout ça fonctionne.
Nous allons donc tout simplement ajouter une Route dans le fichier routes.php qui fera appel à la classe Mail de Laravel pour envoyer un email de test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Ajouter ce code dans votre fichier routes.php $data = [ 'name' => 'toto', 'email' => 'toto@me.com', 'user_message' => 'Mon site est le plus veau... euh beau!' ]; Route::get('testmail', function() use ($data) { // On envoie le mail depuis la vue "emails/contact" (que nous allons créer) // avec les données ($data) qu'on lui passe depuis le tableau créé ci-dessus Mail::send('emails.contact', $data, function($message) { $message->to('votre_email@gmail.com', 'John Doe')->subject('Contact depuis mon beau site'); }); }); |
Ensuite, on va créer la vue correspondante dans le fichier app/views/emails/contact.blade.php.
1 2 3 4 5 6 7 |
<h1>Contact depuis le site</h1> <h3>Envoyé par {{ $name }}</h3> <h3>Email de contact : {{ $email }}</h3> <p>{{ $user_message }}</p> |
Finalement, on teste le tout en accédant à la Route que nous venons d’ajouter à notre fichier routes.php. Dans votre navigateur, accéder à l’url correspondant à cette Route (quelque chose comme http://votreapp.app:8000/testmail, si vous utilisez Homestead) . Normalement, une page blanche s’affiche (car on ne retourne rien avec notre code comme confirmation en cas de succès). Une fois que ça a fini de tourner, rendez-vous sur votre boite mail de réception (dans l’exemple, c’est votre_email@gmail.com). Vous devriez y voir le mail que nous avons préparé ensemble.
Voilà qui clôture cet article. J’espère que ceci vous sera utile. N’hésitez pas à poster dans les commentaires si vous avez une quelconque question ou remarque. A très vite pour la suite.