Envoi de courriels avec Laravel 4 et Gmail

L'envoi de courriels est crucial pour toute application Web. En règle générale, un courrier électronique est envoyé pour informer l'utilisateur d'une activité quelconque sur le site, par exemple lorsque des mises à jour ont été effectuées ou que de nouveaux amis ont été trouvés. Dans ce court tutoriel, je vais vous montrer comment envoyer rapidement des courriels avec Gmail à partir d'un exemple d'application Laravel en étendant les fonctionnalités de notre dernier tutoriel, Authentication With Laravel 4..

Nous allons donc utiliser cette application d’authentification (vous pouvez télécharger le code source du précédent tutoriel sur Github pour vous donner un point de départ) avec laquelle nous avons terminé la dernière fois et ajouter une nouvelle fonctionnalité afin que chaque fois qu’un utilisateur s’inscrit sur le site, 'va leur envoyer un email de confirmation, en leur souhaitant la bienvenue!


Configuration du courrier

Avant de pouvoir envoyer des courriels avec Laravel 4, nous devons configurer le app / config / mail.php fichier. Dans ce fichier, nous pouvons définir les options suivantes:

Option La description
chauffeur Le pilote de mailing que vous souhaitez utiliser. Par défaut, ce paramètre est défini sur SMTP, mais vous pouvez également le modifier pour utiliser la fonction de courrier PHP ou Sendmail à la place..
hôte Ceci est l'adresse hôte de votre serveur SMTP.
Port Votre port SMTP.
de Cela vous permet de définir le champ "De" dans votre email, de sorte que tous les emails soient envoyés à partir de la même adresse..
cryptage C'est le protocole de cryptage qui sera utilisé chaque fois que des emails sont envoyés.
Nom d'utilisateur Ceci est votre nom d'utilisateur SMTP.
mot de passe Ceci est votre mot de passe SMTP.
envoyer un mail C'est le chemin où Sendmail peut être trouvé sur le serveur, en utilisant le pilote sendmail.
faire semblant Lorsqu'il est réglé sur vrai, les courriels seront consignés dans un fichier journal plutôt que d'envoyer un vrai message.

Envoi de courrier avec Gmail

Pour ce tutoriel, je vais utiliser Gmail pour envoyer mes courriers électroniques, car son utilisation est extrêmement simple. Pour envoyer un courrier avec Gmail, il vous suffit d'avoir un compte Gmail actif, avec un nom d'utilisateur et un mot de passe. Je vais vous fournir tout le reste. Modifions notre app / config / mail.php fichier qui ressemble à ceci (j'ai supprimé les commentaires pour rendre le code plus compact):

 return array ('driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 587, 'from' => array ('address' => 'authapp @ awesomeauthapp. com ',' name '=>' Awesome Laravel 4 Auth App '),' encryption '=>' tls ',' username '=>' your_gmail_username ',' password '=>' votre_gmail_password ',' sendmail '=>' / usr / sbin / sendmail -bs ',' pretend '=> false,);

Ici j'ai quitté le chauffeur mis à smtp. Je mets le hôte utiliser smtp.gmail.com qui est le serveur SMTP de Gmail. Je mets le Port à 587, la de à une fausse adresse e-mail qui semble convenir à notre application. j'ai quitté le cryptage mis à tls et enfin vous voudrez alors entrer dans votre propre Gmail Nom d'utilisateur et mot de passe pour votre compte et partir faire semblant mis à faux.


Envoi de mail

Exemple de code

Pour cette application, chaque fois qu'un utilisateur s'enregistre avec succès, nous souhaitons lui envoyer un email lui souhaitant la bienvenue sur le site. L’envoi d’e-mails avec Laravel s’effectue à l’aide des touches Mail :: send () méthode. Voici un petit extrait de code, à titre d'exemple:

 Mail :: send ('folder.view', $ data, fonction ($ message) $ message-> à ('utilisateur enregistré @ gmail. Com', 'Jon Doe') -> sujet ('Welcome to the Laravel 4 Auth App! '););

Le premier argument est le fichier de vue que nous aimerions utiliser pour formater notre message électronique. Le deuxième argument concerne toutes les données que nous aimerions transmettre à ce fichier de vue. Le troisième argument est une fermeture qui accepte un $ message objet que nous pouvons utiliser pour dire à l'expéditeur à qui nous envoyons le courrier électronique et quel sera le sujet de ce courrier électronique. Dans cette fermeture, vous pouvez également spécifier d'autres options telles que les pièces jointes, etc. Cela enverra alors le courrier électronique à l'utilisateur..

Assez facile à droite?

Envoi de courriels lors d'une inscription réussie

Modifions maintenant notre UtilisateursContrôleurde postCreate () agir et utiliser ce que nous avons appris sur l'envoi d'e-mails pour envoyer un e-mail de bienvenue à nos utilisateurs, chaque fois qu'ils s'inscrivent pour l'application.

Au sein de notre postCreate () actes si instruction, où nous vérifions si la validation est réussie, juste après l'endroit où nous sauvons l'utilisateur dans la base de données, ajoutons le code suivant:

 if ($ validator-> passes ()) $ utilisateur = nouvel utilisateur; $ utilisateur-> prénom = entrée :: get ('prénom'); $ utilisateur-> nom de famille = entrée :: get ('nom de famille'); $ user-> email = Input :: get ('email'); $ user-> password = Hash :: make (Input :: get ('mot de passe')); $ user-> save (); Mail :: send ('utilisateurs.mails.welcome', tableau ('prénom' '=> entrée :: get (' prénom ')), fonction ($ message) $ message-> à (entrée :: get (' email '), Input :: get (' prénom '). ". Input :: get (' nom de famille ')) -> subject (' Bienvenue dans l'application Laravel 4 Auth! ');); Renvoyer Redirect :: to ( 'utilisateurs / login') -> avec ('message', 'Merci de vous être enregistré!'); else return Redirect :: to ('utilisateurs / s'enregistrer') -> avec ('message', 'Les erreurs suivantes se sont produites ') -> withErrors ($ validator) -> withInput ();

Ici nous avons appelé le Mail :: send () méthode et lui a dit d'utiliser un utilisateurs.mails.welcome Voir la fiche. Nous transmettons ensuite un tableau sous la forme des données qui devraient être disponibles dans le fichier de vue. Dans ce cas, nous venons d'envoyer le prénom de l'utilisateur, à l'aide de la touche Input :: get ('prénom') méthode. Ensuite, nous créons notre fermeture et paramétrons pour envoyer le courrier électronique à l'adresse électronique de l'utilisateur. Nous définissons également le nom en utilisant le prénom et le nom de l'utilisateur du formulaire. Enfin, nous donnons simplement à ce sujet un sujet assez générique (vous pouvez utiliser le sujet de votre choix), afin que l'utilisateur sache en quoi tout le monde parle..

Création du fichier d'affichage de courrier électronique

Maintenant, nous devons créer notre Bienvenue email voir le fichier. Sous app / vues / utilisateurs créer un nouveau dossier nommé des mails et à l'intérieur de celui-ci créer un nouveau fichier nommé bienvenue.blade.php et ajoutez dans le code suivant:

 

Bonjour, $ prenom!

Nous aimerions vous souhaiter personnellement la bienvenue dans l'application Laravel 4 Authentication. Merci de votre inscription!

Dans ce fichier de vue, nous n’avons que du HTML de base, en utilisant le $ prenom variable que nous avons transmise sous forme de données de notre contrôleur à la vue, accueillant l'utilisateur dans l'application. Il n'y a pas grand chose à faire, vous pouvez utiliser vos fichiers de vue pour les courriels, comme vous le faites pour n'importe quelle autre vue..

Essayons-le

Assurez-vous de démarrer votre serveur Web en utilisant php artisan servir et nous pouvons visiter localhost: 8000 / users / register, puis créez un nouvel utilisateur:


… Puis vérifiez le compte de messagerie de cet utilisateur pour vérifier que l'e-mail a été envoyé avec succès:


Parfait! Notre email a été envoyé.


En conclusion

Et c’est tout ce qu’il ya à envoyer des courriels avec Laravel 4 et Gmail. Vous pouvez bien sûr personnaliser vos messages électroniques autant que vous le souhaitez pour rendre le courrier plus attrayant..

À présent, c’est le moyen le plus simple d’envoyer des messages à Laravel et il peut ralentir votre application, car il envoie l’e-mail, mais vous disposez d’autres options. Vous continuerez à utiliser la classe mail de Laravel mais au lieu de l'envoyer immédiatement, vous pouvez mettre vos emails en file d'attente pour les envoyer en arrière-plan, sans faire attendre vos utilisateurs. Mais il vaut mieux enregistrer ce sujet dans un article séparé..

Pour plus d'informations sur l'envoi d'e-mails avec Laravel, consultez la documentation en ligne. Merci d'avoir lu.