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.
Langkah 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.
Langkah 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.
Langkah 3 - Konfigurasi Database
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
Langkah 4 - Uji coba Tes Email
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!".