Comment envoyer des emails à Laravel

Dans cet article, nous allons explorer l’API Mail dans le framework Web Laravel. Laravel tire parti de la célèbre bibliothèque SwiftMailer, facile à utiliser et livrée avec une variété de pilotes de messagerie à choisir. Dans les dernières étapes de l'article, nous présenterons une démonstration détaillée des concepts abordés dans la première moitié de l'article..

Configuration des prérequis

Laravel implémente un wrapper au-dessus de la bibliothèque SwiftMailer, ce qui rend la gestion des e-mails très facile à configurer et à utiliser en même temps. Vous pouvez trouver les paramètres de messagerie par défaut à l'adresse config / mail.php.

 env ('MAIL_DRIVER', 'sendmail'), / * | ---------------------------------------- -------------------------------------- | Adresse d'hôte SMTP | -------------------------------------------------- ---------------------------- | | Ici, vous pouvez fournir l’adresse hôte du serveur SMTP utilisé par votre | applications. Une option par défaut est fournie compatible avec | le service postal Mailgun qui fournira des livraisons fiables. | * / 'hôte' => env ('MAIL_HOST', 'smtp.mailgun.org'), / * | ------------------------- ------------------------------------------------- | Port d'hôte SMTP | -------------------------------------------------- ---------------------------- | | Il s'agit du port SMTP utilisé par votre application pour envoyer des courriers électroniques à | utilisateurs de l'application. Comme l'hôte, nous avons défini cette valeur sur | rester compatible avec l'application de messagerie Mailgun par défaut. | * / 'port' => env ('MAIL_PORT', 587), / * | ------------------------------- ------------------------------------------- | Adresse globale "depuis" | ------------------------------------------------ ------------------------------ | | Vous pouvez souhaiter que tous les courriers électroniques envoyés par votre application soient envoyés de | la même adresse. Ici, vous pouvez spécifier un nom et une adresse | utilisé globalement pour tous les courriels envoyés par votre application. | * / 'from' => ['address' => env ('MAIL_FROM_ADDRESS', '[email protected]'), 'name' => env ('MAIL_FROM_NAME', 'Example'),], / * - - -------------------------------------------------- ----------------------- | Protocole de cryptage de messagerie | ------------------------------------------------ ------------------------------ | | Ici, vous pouvez spécifier le protocole de cryptage à utiliser lorsque | l'application envoie des messages électroniques. Un défaut raisonnable en utilisant le | Le protocole de sécurité de la couche transport devrait offrir une grande sécurité. | * / 'cryptage' => env ('MAIL_ENCRYPTION', 'tls'), / * | ----------------------------- --------------------------------------------- | Nom d'utilisateur du serveur SMTP | -------------------------------------------------- ---------------------------- | | Si votre serveur SMTP requiert un nom d'utilisateur pour l'authentification, vous devriez | Réglez-le ici. Cela s'habituera à s'authentifier auprès de votre serveur sur | lien. Vous pouvez également définir la valeur "password" en dessous de celle-ci. | * / 'username' => env ('MAIL_USERNAME'), 'password' => env ('MAIL_PASSWORD'), / * | --------------------- -------------------------------------------------- --- | Chemin système Sendmail | -------------------------------------------------- ---------------------------- | | Lorsque vous utilisez le pilote "sendmail" pour envoyer des e-mails, nous avons besoin de savoir | le chemin d'accès à l'endroit où Sendmail réside sur ce serveur. Un chemin par défaut a | été fourni ici, ce qui fonctionnera bien sur la plupart de vos systèmes. | * / 'sendmail' => '/ usr / sbin / sendmail -bs', / * | ----------------------------- --------------------------------------------- | Paramètres de messagerie Markdown | -------------------------------------------------- ---------------------------- | | Si vous utilisez le rendu de courrier électronique basé sur Markdown, vous pouvez configurer votre | chemins de thème et de composant ici, vous permettant de personnaliser la conception | des emails. Ou, vous pouvez simplement vous en tenir aux valeurs par défaut de Laravel! | * / 'markdown' => ['theme' => 'default', 'path' => [chemin_ressource ('vues / fournisseur / mail'),],],]; 

En ce qui concerne l'envoi de courrier, Laravel prend en charge différents pilotes parmi lesquels choisir. Comme vous pouvez le voir, la valeur par défaut MAIL_DRIVER est réglé sur smtp.

Si vous allez utiliser le smtp pilote pour envoyer des e-mails, vous devez également définir d'autres paramètres connexes tels que MAIL_HOST, MAIL_PORT, MAIL_ENCRYPTION, MAIL_USERNAME, et MAIL_PASSWORD.

D'autre part, si vous allez utiliser le envoyer un mail pilote, alors vous voulez vous assurer que le envoyer un mail chemin système est défini sur la valeur correcte dans le config / mail.php fichier.

Vous pouvez également définir le de adresse qui sera utilisée lors de l’envoi de courrier sous le de clé. Enfin, si vous souhaitez utiliser le rendu du courrier électronique basé sur Markdown, vous pouvez définir ces paramètres sous réduction clé.

La cerise sur le gâteau est que vous pouvez également utiliser des fournisseurs de services de messagerie tiers tels que Mailgun, Mandrill, SES et SparkPost. Si vous utilisez l'un de ces services, vous devez vous assurer de définir les paramètres correspondants dans config / services.php fichier.

Il s’agissait donc d’une introduction de base aux paramètres liés à l’API de messagerie dans Laravel. Dans la section suivante, nous allons passer à un exemple personnalisé qui vous montre comment envoyer des courriels..

Créer la classe Mailable

Dans cette section, nous allons créer la classe mailable, qui sera utilisée pour envoyer des courriels. La classe mailable est responsable de l’envoi d’e-mails à l’aide d’un mailer configuré dans le config / mail.php fichier. En fait, Laravel fournit déjà une commande artisanale nous permettant de créer un modèle de base.

artisanat php: mail DemoEmail

Cela devrait créer un modèle de courrier électronique vierge à app / Mail / DemoEmail.php, comme indiqué dans l'extrait suivant.

view ('view.name'); 

Remplaçons le contenu de ce fichier par le suivant.

démo = $ démo;  / ** * Construire le message. * * @return $ this * / fonction publique build () return $ this-> de ('expé[email protected]') -> vue ('mails.demo') -> text ('mails.demo_plain') - > with (['testVarOne' => '1', 'testVarTwo' => '2',]) -> attach (chemin_public ('/ images'). '/ demo.jpg', ['as' = '' demo.jpg ',' mime '=>' image / jpeg ',]); 

Il existe deux méthodes importantes que la classe mailable implémente généralement-__construction et construire. le __construction La méthode est utilisée pour initialiser les objets que vous êtes censé utiliser dans le modèle de courrier électronique. D'autre part, le construire Cette méthode est utilisée pour initialiser davantage de valeurs spécifiques à l’e-mail, telles que from, modèle de vue, pièces jointes, etc..

Dans notre cas, nous avons passé le $ démo objet en tant qu'argument de constructeur, et il est affecté à la démo propriété publique.

dans le construire méthode, nous avons initialisé une configuration spécifique au courrier électronique.

  • le de est utilisé pour définir une adresse e-mail qui sera utilisée comme adresse d'expéditeur.
  • En utilisant le vue méthode, vous pouvez définir le modèle de courrier électronique qui sera utilisé lors de l’envoi d’un courrier électronique à l’aide de cette option. Dans notre cas, nous avons mis à mails.demo, et cela signifie que vous devez créer un fichier de modèle de vue à ressources / views / mails / demo.blade.php.
  • Ensuite, le texte méthode est utilisée pour configurer la version en texte brut d'un modèle de courrier électronique.
  • Comme nous venons de le dire, le __construction méthode est utilisée pour configurer les objets qui seront utilisés dans le modèle de courrier électronique, vous pouvez également utiliser le avec méthode qui vous permet de définir les données d'affichage d'un message.
  • Ensuite, nous avons utilisé le attacher méthode pour attacher une image avec un message.

Bien sûr, nous devons créer des modèles de courrier électronique que nous sommes supposés utiliser lors de l'envoi de courriers électroniques. Allez-y et créez un fichier ressources / views / mails / demo.blade.php comme indiqué dans l'extrait suivant.

Bonjour $ demo-> receiver, 

Ceci est un email de démonstration à des fins de test! Aussi, c'est la version HTML.

Valeurs des objets de démonstration:

Première démo: $ demo-> demo_one

Deuxième démo: $ demo-> demo_two

Valeurs transmises par la méthode With:

testVarOne: $ testVarOne

testVarTwo: $ testVarTwo

Je vous remercie,
$ demo-> expéditeur

En outre, créons la version en texte brut de ce fichier à ressources / views / mails / demo_plain.blade.php.

Bonjour $ demo-> receiver, ceci est un email de démonstration à des fins de test! En outre, c'est la version HTML. Valeurs des objets de démonstration: Première démonstration: $ demo-> demo_one Deuxième démonstration: $ demo-> démo_two Valeurs transmises par With, méthode: testVarOne: $ testVarOne testVarOne: $ testVarOne Merci, $ demo-> sender

C’était donc la classe mailable à votre disposition, et nous ne l’avons pas encore fait car nous devons utiliser le Courrier façade pour réellement envoyer des mails. Dans la section suivante, nous verrons comment vous pouvez utiliser le Courrier Façade pour envoyer des emails en utilisant le DemoEmail Classe Mailable qui vient d'être créée dans cette section.

Emballer

Dans cette section, nous allons créer un exemple pour montrer comment utiliser le Mailable classe qui a été créée dans la dernière section.

Créons un fichier de contrôleur à app / Http / Controllers / MailController.php avec le contenu suivant.

demo_one = 'Demo One Value'; $ objDemo-> demo_two = 'Demo Two Value'; $ objDemo-> sender = 'SenderUserName'; $ objDemo-> receiver = 'ReceiverUserName'; Mail :: to ("[email protected]") -> send (nouveau DemoEmail ($ objDemo)); 

Il est important de noter que nous avons inclus le Illuminate \ Support \ Façades \ Mail Façade qui sera utilisé pour envoyer un email. dans le envoyer méthode suivante, la déclaration suivante permet d’envoyer un courrier électronique en initialisant le App \ Mail \ DemoEmail Mailable en premier lieu.

Mail :: to ("[email protected]") -> send (nouveau DemoEmail ($ objDemo));

le à méthode du Illuminate \ Support \ Façades \ Mail Façade renvoie une instance du \ Illuminate \ Mail \ PendingMail classe, qui contient déjà un mailer approprié configuré dans le config / mail.php fichier.

Et enfin, nous utilisons le envoyer méthode du \ Illuminate \ Mail \ PendingMail classe qui envoie un email réel.

Pour le tester, ajoutons un itinéraire associé dans le routes / web.php fichier.

// Routes liées au courrier électronique Route :: get ('mail / send', 'MailController @ send');

Et avec cela en place, vous pouvez exécuter l'URL http://votre-laravel-site.com/mail/send pour voir si cela fonctionne comme prévu.

D'autre part, si vous souhaitez tester vos modèles d'e-mail rapidement, sans envoyer d'e-mails réels, il existe une disposition dans Laravel qui vous permet de consigner tous les e-mails sortants..

Pour y parvenir, vous devez définir la valeur de MAIL_DRIVER à bûche dans le config / mail.php fichier. Ensuite, vous pouvez exécuter l'URL susmentionnée et inspecter le fichier journal pour vérifier si le modèle de courrier électronique a été consigné à cet emplacement..

Si tout se passe bien, vous devriez voir un email en cours de connexion à la stockage / logs / laravel.log fichier.

C’est à peu près tout ce qui concerne la fonctionnalité mail de Laravel, ce qui conclut également cet article..

Conclusion

Aujourd’hui, nous avons étudié l’API de messagerie intégrée à Laravel, qui prend également en charge divers pilotes..

En commençant par les concepts de base, nous avons implémenté la classe mailable, élément essentiel de l’API de messagerie de Laravel au fur et à mesure de notre progression. À la fin, nous avons également testé la classe mailable en créant un contrôleur personnalisé pour voir si elle fonctionne réellement..

Si vous commencez tout juste à vous familiariser avec Laravel ou souhaitez étendre vos connaissances, votre site ou vos applications avec des extensions, nous pouvons étudier le marché à plusieurs niveaux sur le marché Envato..

J'aimerais connaître vos commentaires sous forme de questions et de commentaires à l'aide du flux ci-dessous.!