How to send mail in laravel 5.6
In Laravel 5.6, you can send mail using the Mail
facade. Here's a step-by-step guide:
Step 1: Create a Mail Class
Create a new PHP file in the app/Mail
directory, e.g., WelcomeEmail.php
. This file will contain the logic for sending the email.
// app/Mail/WelcomeEmail.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class WelcomeEmail extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function build()
{
return $this->markdown('emails.welcome');
}
}
Step 2: Create a Blade Template
Create a new Blade template in the resources/views/emails
directory, e.g., welcome.blade.php
. This template will contain the email content.
<!-- resources/views/emails/welcome.blade.php -->
<h1>Welcome {{ $user->name }}!</h1>
<p>Thank you for signing up!</p>
Step 3: Send the Mail
In your controller or service, use the Mail
facade to send the email:
// app/Http/Controllers/AuthController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Mail\WelcomeEmail;
use Illuminate\Support\Facades\Mail;
class AuthController extends Controller
{
public function register(Request $request)
{
//... register user logic...
$user = User::create($request->all());
Mail::to($user->email)->send(new WelcomeEmail($user));
return redirect()->route('home');
}
}
Step 4: Configure Mail Settings
In your config/mail.php
file, configure the mail settings:
// config/mail.php
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
'name' => env('MAIL_FROM_NAME', 'Your Name'),
],
'to' => [
'address' => env('MAIL_TO_ADDRESS', '[email protected]'),
'name' => env('MAIL_TO_NAME', 'Recipient Name'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
Step 5: Set Environment Variables
Set the environment variables in your .env
file:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_FROM_NAME=Your Name
[email protected]
MAIL_TO_NAME=Recipient Name
MAIL_ENCRYPTION=tls
[email protected]
MAIL_PASSWORD=your-password
That's it! With these steps, you should be able to send mail using Laravel 5.6.