Mengirim Email Menggunakan Gmail SMTP di Laravel 11
Mengirim email adalah fitur umum dalam aplikasi web, dan Laravel memudahkan proses ini dengan dukungan yang kuat untuk berbagai layanan pengiriman email, termasuk Gmail SMTP. Berikut adalah langkah-langkah untuk mengatur pengiriman email menggunakan Gmail SMTP di Laravel 11.
Instal laravel 11
Jika Anda belum memiliki aplikasi Laravel 11, buat aplikasi baru terlebih dahulu:
composer create-project --prefer-dist laravel/laravel nama_aplikasi
Konfigurasi Environment
Buka file .env
di root proyek Laravel Anda dan tambahkan konfigurasi SMTP Gmail seperti berikut:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=your-email-password
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="${APP_NAME}"
Pastikan untuk mengganti [email protected]
dan your-email-password
dengan kredensial Gmail Anda.
cara mendapatan kredensial mail https://www.barajacoding.or.id/cara-mendapatkan-kredensial-token-email/
Buat Mail Class
Laravel menyediakan artisan command untuk membuat kelas mail. Jalankan perintah berikut untuk membuat mail class:
php artisan make:mail ContohMail
Ini akan membuat file ContohMail.php
di direktori app/Mail
.
Konfigurasi Mail Class
Buka file ContohMail.php
dan konfigurasikan konten email Anda:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ContohMail extends Mailable
{
use Queueable, SerializesModels;
public $details;
public function __construct($details)
{
$this->details = $details;
}
public function build()
{
return $this->subject('Contoh Email dari Laravel')
->view('emails.contoh');
}
}
Buat View untuk Email
Buat view untuk email di direktori resources/views/emails/contoh.blade.php
:
<!DOCTYPE html>
<html>
<head>
<title>Contoh Email</title>
</head>
<body>
<h1>{{ $details['title'] }}</h1>
<p>{{ $details['body'] }}</p>
<p>Terima kasih!</p>
</body>
</html>
Kirim Email
Anda dapat mengirim email menggunakan Mail facade di Laravel. Tambahkan rute atau metode untuk mengirim email di salah satu controller Anda. Contoh:
use Illuminate\Support\Facades\Mail;
use App\Mail\ContohMail;
Route::get('send-email', function () {
$details = [
'title' => 'Judul Email',
'body' => 'Ini adalah contoh body email.'
];
Mail::to('[email protected]')->send(new ContohMail($details));
return 'Email telah dikirim!';
});
Pengujian
Jalankan server Laravel Anda dan akses rute send-email
untuk mengirim email:
php artisan serve
Buka browser dan akses http://localhost:8000/send-email
. Jika semuanya dikonfigurasi dengan benar, Anda akan melihat pesan “Email telah dikirim!” dan email akan terkirim ke alamat email penerima.
Catatan Tambahan
Pastikan Anda telah mengaktifkan akses aplikasi kurang aman di akun Gmail Anda jika Anda mengalami masalah autentikasi.Pertimbangkan menggunakan layanan email yang lebih aman untuk produksi, seperti SendGrid atau Mailgun, karena menggunakan kredensial Gmail secara langsung dapat memiliki keterbatasan dan risiko keamanan.