Laravel - Envoi d'un e-mail

Laravel utilise une bibliothèque gratuite riche en fonctionnalités SwiftMailerpour envoyer des e-mails. En utilisant la fonction de bibliothèque, nous pouvons facilement envoyer des e-mails sans trop de tracas. Les modèles de courrier électronique sont chargés de la même manière que les vues, ce qui signifie que vous pouvez utiliser la syntaxe Blade et injecter des données dans vos modèles.

Le tableau suivant présente la syntaxe et les attributs de send fonction -

Syntaxe void send (chaîne | tableau $ vue, tableau $ données, fermeture | chaîne $ rappel)
Paramètres
  • $ view (string | array) - nom de la vue qui contient le message électronique

  • $ data (array) - tableau de données à passer à la vue

  • $ callback - un rappel de fermeture qui reçoit une instance de message, vous permettant de personnaliser les destinataires, l'objet et d'autres aspects du message électronique

Retour rien
La description Envoie un e-mail.

Dans le troisième argument, la fermeture $ callback a reçu une instance de message et avec cette instance, nous pouvons également appeler les fonctions suivantes et modifier le message comme indiqué ci-dessous.

Certaines des méthodes les moins courantes comprennent:

Pour joindre ou incorporer des fichiers, vous pouvez utiliser les méthodes suivantes:

  • $ message → attach ('chemin / vers / pièce jointe.txt');
  • $ message → embed ('chemin / vers / pièce jointe.jpg');

Le courrier peut être envoyé au format HTML ou texte. Vous pouvez indiquer le type de courrier que vous souhaitez envoyer dans le premier argument en passant un tableau comme indiqué ci-dessous. Le type par défaut est HTML. Si vous souhaitez envoyer un courrier en texte brut, utilisez la syntaxe suivante.

Syntaxe

Mail::send([‘text’=>’text.view’], $data, $callback);

Dans cette syntaxe, le premier argument prend un tableau. Utilisationtext comme nom de clé de la vue en tant que valeur de la clé.

Exemple

Step 1 - Nous allons maintenant envoyer un email à partir du compte Gmail et pour cela vous devez configurer votre compte Gmail dans le fichier d'environnement Laravel - .envfichier. Activez la vérification en deux étapes dans votre compte Gmail et créez un mot de passe spécifique à l'application, puis modifiez les paramètres .env comme indiqué ci-dessous.

.env

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Step 2 - Après avoir changé le .env exécutez les deux commandes ci-dessous pour vider le cache et redémarrer le serveur Laravel.

php artisan config:cache

Step 3 - Créez un contrôleur appelé MailController en exécutant la commande suivante.

php artisan make:controller MailController --plain

Step 4 - Après une exécution réussie, vous recevrez la sortie suivante -

Step 5 - Copiez le code suivant dans

app/Http/Controllers/MailController.php fichier.

app/Http/Controllers/MailController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

Step 6 - Copiez le code suivant dans resources/views/mail.blade.php fichier.

resources/views/mail.blade.php

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

Step 7 - Ajoutez les lignes suivantes dans app/Http/routes.php.

app/Http/routes.php

Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');

Step 8 - Visitez l'URL suivante pour tester les e-mails de base.

http://localhost:8000/sendbasicemail

Step 9- L'écran de sortie ressemblera à ceci. Vérifiez votre boîte de réception pour voir la sortie de courrier électronique de base.

Step 10 - Visitez l'URL suivante pour tester l'e-mail HTML.

http://localhost:8000/sendhtmlemail

Step 11- L'écran de sortie ressemblera à ceci. Vérifiez votre boîte de réception pour voir la sortie de l'e-mail html.

Step 12 - Visitez l'URL suivante pour tester l'e-mail HTML avec pièce jointe.

http://localhost:8000/sendattachmentemail

Step 13 - Vous pouvez voir la sortie suivante

Note - Dans le MailController.phpfile l'adresse e-mail dans la méthode from doit être l'adresse e-mail à partir de laquelle vous pouvez envoyer l'adresse e-mail. En général, il doit s'agir de l'adresse e-mail configurée sur votre serveur.