Mengirim Email Menggunakan SMTP Gmail di Laravel

Kita akan membahas bagaimana cara menggunakan SMTP Gmail untuk mengirim email melalui Laravel. Langkah-langkah yang kita lakukan mulai dari konfigurasi akun Gmail agar dapat digunakan untuk mengirim email, setup Laravel, dan implementasi untuk mengirim email.
ada beberapa hal yang harus teman-teman siapkan:
- Akun Gmail aktif.
- Nomor telepon yang masih aktif untuk mengaktifkan fitur verifikasi dua langkah (2-Step Verification) pada akun Gmail, yang diperlukan untuk membuat App Password.
1. Mengaktifkan App Password di Gmail
Langkah pertama adalah mengkonfigurasi akun Gmail agar bisa digunakan untuk mengirim email melalui aplikasi Laravel.
- Login ke Akun Google, lalu masuk ke menu Akun Saya (My Account).
- Masuk ke bagian Keamanan (Security).
- Di bawah bagian Cara masuk ke Google (How you sign in to Google), aktifkan Verifikasi 2 Langkah (2-Step Verification).
- Ikuti instruksi untuk menyelesaikan verifikasi, seperti memasukkan nomor telepon yang masih aktif untuk menerima kode verifikasi dari Google.
- Setelah fitur verifikasi dua langkah diaktifkan, kembali ke halaman keamanan dan pilih App Passwords.
- Pada halaman App Passwords, buat password baru dengan nama aplikasi, misalnya "Laravel SMTP".
- Simpan App Password yang dihasilkan karena akan kita gunakan untuk konfigurasi Laravel nanti.
2. Installasi Laravel
Setelah menyelesaikan pengaturan Gmail, kita akan membuat proyek Laravel baru.
Gunakan perintah berikut untuk membuat proyek baru:
composer create-project --prefer-dist laravel/laravel laravel-smtp-email
tunggu sampai proses installasi selesai.
Setelah selesai, buka file .env
di dalam proyek Laravel dan sesuaikan konfigurasi email seperti ini:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=app_password_hasil_generate_tanpa_spasi
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="Tutorial Kodemastery"
Pada bagian MAIL_PASSWORD, masukkan App Password yang telah teman-teman buat di langkah pertama. Jangan lupa simpan setelah konfigurasi.
Jalankan perintah berikut untuk membuat mailable baru:
php artisan make:mail TestEmail
Setelah berhasil dibuat, buka file app/Mail/TestEmail.php
dan modifikasi menjadi seperti berikut:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class TestEmail extends Mailable
{
use Queueable, SerializesModels;
public $emailData;
public function __construct($emailData)
{
$this->emailData = $emailData;
}
public function build()
{
return $this->subject($this->emailData['subject'])
->view('emails.test_email');
}
}
Pada kode di atas, kita mengirim data email melalui variabel $emailData
yang berisi detail seperti subjek dan konten email.
Selanjutnya, buat file resources/views/emails/test_email.blade.php
untuk template email:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Email Uji Coba</title>
</head>
<body>
<h1>{{ $emailData['title'] }}</h1>
<p>{{ $emailData['message'] }}</p>
</body>
</html>
File ini akan menjadi template untuk email yang kita kirim.
Sekarang kita tambahkan route untuk mengirim email. Buka file routes/web.php
dan tambahkan kode berikut:
<?php
use Illuminate\Support\Facades\Mail;
use App\Mail\TestEmail;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
Route::get('/send-email', function () {
$emailData = [
'subject' => 'Email Uji Coba SMTP',
'title' => 'Pengujian SMTP Laravel',
'message' => 'Ini adalah email uji coba yang dikirim menggunakan SMTP Gmail di Laravel - Kodemastery.'
];
Mail::to('[email protected]')->send(new TestEmail($emailData));
return 'Email berhasil dikirim!';
});
Pada route ini, kita menggunakan Mail Facade untuk mengirim email. Alamat email tujuan dan konten email diatur di dalam array $emailData
.
jalankan server Laravel dengan perintah berikut:
php artisan serve
Buka browser dan akses URL berikut untuk mengirim email:
http://127.0.0.1:8000/send-email
Jika konfigurasi sudah benar, email akan terkirim dan muncul pesan "Email berhasil dikirim!".