Comment envoyer un email en utilisant un compte Gmail dans une application Laravel.
Laravel 11 fournit une configuration intégrée pour envoyer des emails. Vous pouvez utiliser plusieurs pilotes pour envoyer des emails dans Laravel 11, comme SMTP, Mailgun, Postmark, Amazon SES, etc. Dans cet exemple, nous allons utiliser le pilote mailer Google Gmail pour envoyer un email.
Table des matières : [Masquer]
Étape 1 : Installer Laravel 11
composer create-project laravel/laravel example-app
Étape 2 : Configurer les paramètres
Dans cette étape, vous devez ajouter la configuration pour l’envoi des emails. Définissez le pilote de messagerie comme “gmail”, ainsi que l’hôte, le port, le nom d’utilisateur et le mot de passe de messagerie. Laravel 11 utilisera ces détails pour l’envoi des emails. Ajoutez simplement les paramètres suivants dans votre fichier .env :
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=mygoogle@gmail.com
MAIL_PASSWORD=rrnnucvnqlbsl
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mygoogle@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
Assurez-vous d’activer l’accès sécurisé sur votre compte Gmail. Pour ce faire, allez dans votre compte Google, cliquez sur “Compte”, puis accédez à l’onglet “Sécurité”. Faites défiler vers le bas jusqu’à “Accès des applications moins sécurisées” et activez cette option.
Étape 3 : Créer une classe Mail
Dans cette étape, nous allons créer une classe Mail appelée DemoMail pour l’envoi des emails. Nous y écrirons le code pour définir quelle vue sera utilisée et inclure un objet contenant les données de l’utilisateur. Exécutez la commande suivante :
php artisan make:mail DemoMail
Ensuite, mettez à jour le fichier DemoMail.php avec le contenu fourni.
// app/Mail/DemoMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class DemoMail extends Mailable
{
use Queueable, SerializesModels;
public $mailData;
/**
* Create a new message instance.
*/
public function __construct($mailData)
{
$this->mailData = $mailData;
}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Demo Mail',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
view: 'emails.demoMail'
);
}
/**
* Get the attachments for the message.
*
* @return array
*/
public function attachments(): array
{
return [];
}
}
Étape 4 : Créer un contrôleur
Nous allons créer un contrôleur MailController avec une méthode index() où nous écrirons le code pour envoyer un email à une adresse donnée. D’abord, créez le contrôleur en exécutant la commande suivante :
php artisan make:controller MailController
Puis, mettez à jour le fichier MailController.php avec le contenu fourni.
// app/Http/Controllers/MailController.php
<?PHP
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Mail\DemoMail;
class MailController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function index()
{
$mailData = [
'title' => 'Mail from ItSolutionStuff.com',
'body' => 'This is for testing email using smtp.'
];
Mail::to('your_email@gmail.com')->send(new DemoMail($mailData));
dd("Email is sent successfully.");
}
}
Étape 5 : Créer des routes
Ajoutez la route suivante dans le fichier routes/web.php :
// routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\MailController;
Route::get('send-mail', [MailController::class, 'index']);
Étape 6 : Créer une vue Blade
Créez un fichier de vue Blade pour rédiger le contenu de l’email. Nous allons y ajouter du texte simple. Créez le fichier suivant dans le dossier resources/views/emails :
Nom du fichier : demoMail.blade.php
// resources/views/emails/demoMail.blade.php
<!DOCTYPE html>
<html>
<head>
<title>nataswim.com</title>
</head>
<body>
<h1>{{ $mailData['title'] }}</h1>
<p>{{ $mailData['body'] }}</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Thank you</p>
</body>
</html>
Toutes les étapes nécessaires sont terminées. Maintenant, exécutez la commande suivante pour lancer l’application Laravel :
php artisan serve
Ouvrez votre navigateur et accédez à l’URL suivante pour voir le résultat :
http://localhost:8000/send-mail
Lorsque vous accédez à cette route, un email sera envoyé via Gmail et le message de confirmation suivant s’affichera :
Email is sent successfully.