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 |
|
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.
- $ message → subject ('Bienvenue au point Tutoriels');
- $ message → from ('[email protected] ',' M. Exemple ');
- $ message → à ('[email protected] ',' M. Exemple ');
Certaines des méthodes les moins courantes comprennent:
- $ message → expéditeur ('[email protected] ',' M. Exemple ');
- $ message → returnPath ('[email protected] ');
- $ message → cc ('[email protected] ',' M. Exemple ');
- $ message → bcc ('[email protected] ',' M. Exemple ');
- $ message → replyTo ('[email protected] ',' M. Exemple ');
- $ message → priorité (2);
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.