Berikut adalah cara membuat pengiriman email dengan Laravel :
1. Buat project dengan nama : laravel-mail
composer create-project --prefer-dist laravel/laravel:^9.1 laravel-mail
lalu masuk ke folder tersebut dengan perintah pada commandpromt ( CMD ) / terminal
cd laravel-mail
Setelah jalankan perintah dibawah pada terminal . CMD :
php artisan serve
Untuk melihat hasil , buka browser lalu ketik http://localhost:8000
2. Konfigurasi .env
2.1. Jika menggunakan SMTP Gmail : Modif file .env menjadi seperti dibawah ini
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=namaemail@gmail.com
MAIL_PASSWORD=passwordemail
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=namaemail@gmail.com
MAIL_FROM_NAME=”${APP_NAME}”
Setelah itu masuk ke pengaturan Google Security pada akun Gmail yang digunakan. Masuk halaman Google Account, lalu klik Security. Scroll ke bawah sampai menemukan bagian Less secure app access, set , kemudian On kan
kalau menggunakan bahasa indonesia pada gmail :
Masuk pengaturan Google Keamanan pada akun Gmail yang digunakan. Mmasuk halaman Kelola Akun Google Anda, lalu klik Keamanan. Scroll ke bawah sampai menemukan bagian Akses aplikasi yang kurang aman, set menjadi Nonaktif
2.2. Jika menggunakan SMTP hosting, modif file .env menjadi seperti dibawah :
MAIL_DRIVER=smtp
MAIL_HOST=mail.ptxyz.com
MAIL_PORT=465
MAIL_USERNAME=namaemail@ptxyz.com
MAIL_PASSWORD=passwordemail
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=namaemail@ptxyz.com
MAIL_FROM_NAME=”${APP_NAME}”
3. Buat Class Mail : nama kelas adalah SendEmail
Jalankan perintah dibawah ini pada terminal / cmd
hp artisan make:mail SendEmail
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class SendEmail extends Mailable
{
use Queueable, SerializesModels;
public $data;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('Testing Kirim Email')
->view('emails.sendemail');
}
}
4. Membuat Blade View
Kemudian ke folder resources/views, lalu buatlah folder dengan nama emails. dan buatlah file dengan nama sendemail.blade.php di dalam folder tersebut, lalu isikan sintak dibawah :
<!DOCTYPE html>
<html>
<head>
<title>ptxzy.com</title>
</head>
<body>
<h3>{{ $data['name'] }}</h3>
<h4>{{ $data['body'] }}</h4>
<p> Terima kasih </p>
</body>
</html>
5. Membuat Mail Controller
Jalankan perintah dibawah ini pada terminal / cmd
php artisan make:controller MailController
atau dibuat secara manual dengan cara masuk ke app/Http/Controllers lalu buat file baru dalam folder controllers.
Setelah itu, modif isi Mail Controller tersebut :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Mail\SendEmail;
use Illuminate\Support\Facades\Mail;
class MailController extends Controller
{
public function index(){
$details = [
'title' => 'Mail from ptxyz.com',
'body' => 'Email menggunakan smtp'
];
\Mail::to('emailpenerima@gmail.com')->send(new \App\Mail\SendEmail($details));
dd("Email berhasil dikirim.");
}
}
6. Menambahkan Route
Masuk ke folder routes, lalu edit file web.php, tambahkan route di bawah ini.
Route::get('send-email','App\Http\Controllers\MailController@index');
pada tahap no 5 dan 6 digabungkan dalam menambahkan router :
<?php
use Illuminate\Support\Facades\Mail;
use App\Mail\SendEmail;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('Email Laravel');
});
Route::get('/send-email',function(){
$data = [
'name' => 'Admin PT. XYZ',
'body' => 'Kirim Email Dengan Laravel'
];
Mail::to('emailpenerima@gmail.com')->send(new SendEmail($data));
dd("Email Berhasil dikirim.");
});
7. Mengirim Email
Buka browser lalu ketikan http://localhost:8000/send-email. maka akan menampilkan hasil seperti berikut ini.
Kemudian lihat email yang dikirim :