Laravel Mailgun Integration Example; In this tutorial you will learn how to send Emails with Mailgun in Laravel application. Using this example you will understand laravel mailgun setup and integration to send email using mailgun servecies.
Laravel provide us mail class to send email wheres you can use several drivers for sending email in laravel. You can use mailtrap, smtp, Mailgun, Postmark, Amazon SES, and sendmail. You just need to configure on .env file what driver you want to use.
This tutorial gives you step by step instruction to sending email in laravel using mailgun. You can use this example in your laravel 5, laravel 6, laravel 7, laravel 8 or laravel 9 apps.
What is Mailgun?
Mailgun is an email delivery service that provides developers an easy API to send out transactional emails from their website. And the Mailgun service is already built into the core of Laravel!
Sending Emails with Laravel and Mailgun
Follow the following steps to sending email in laravel using the mailgun service;
- Step 1: Install Laravel App
- Step 2: Connect App to Database
- Step 3: Mailgun Configuration
- Step 4: Make Routes
- Step 5: Send Mail From Controller
- Step 6: Create Blade File
- Step 7: Run Development Server
Install Laravel App
First run the following command in terminal to install laravel fresh app for laravel sending email example with mailgun.
composer create-project --prefer-dist laravel/laravel laravel-mailgun
Go into the app:
cd laravel-mailgun
Connect APP to Database
Open the .env file and add your database credentials such as database name, username equally important password:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=db name DB_USERNAME=db user name DB_PASSWORD=db password
Mailgun Configuration
Next, you need to create account on mailgun site. So click bellow link to create account in mailgun account so we can use to sending email using mailgun service:
After creating account you will get mail configuration as mail host, mail port, mail username, mail password.
Now get all your mailgun details and put in your envoirement file (.env) just like below.
.env
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@sandbox656565eesd48c4..
MAIL_PASSWORD=98c293ed..
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=admin@example.com
MAIL_FROM_NAME="${APP_NAME}"
Make Routes
Open routes/web.php file and define the route to impement the laravel mailgun email sending example;
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EmailController;
Route::get('send-email', [EmailController::class, 'sendEmail']);
Send Mail From Controller
Now create a new controller named as EmailController using the following command.
php artisan make:controller EmailController
After running this command you will find new file in this path “app/Http/Controllers/PostController.php”. Open this file and put the exiting below code on it;
app\Http\Controllers\EmailController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
class EmailController extends Controller
{
public function sendEmail()
{
$data = [
'subject' => 'Test subject',
'title' => 'Test mail send from codingdriver.com',
'body' => 'This is for testing email using mailgun'
];
Mail::send('email-template', $data, function($message) use ($data) {
$message->to('testuser@example.com')
->subject($data['subject']);
});
dd("Email is Sent.");
}
}
Create Blade File
Now we need to create a email blade file which will saw in your mail service provider inside view. Lets create and put the below code on it.
resources\views\emails\email-template.blade.php
<html>
<head>
<title>codingdriver.com</title>
</head>
<body>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Welcome!</div>
<div class="card-body">
<h1>{{ $title }}</h1>
<p>{{ $body }}</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Run Development Server
Finnaly, the laravel mailgun email sending example is completed, now we need to test, so we need to run the project using the serve command:
Run App:
php artisan serve
Open Link: Now open the link and send email.
http://localhost:8000/send-email
Test your requirement and get email in your mailgun account. I hope this example help you…