Ada kalanya dalam fitur web kita perlu melakukan kirim email. Namun fitur mail() bawaan php seringkali tidak terkirim seharusnya karena adanya setting atau konfigurasi server email penerima yang berbeda-beda menyebabkan email sering spam atau bahkan tidak diterima. Oleh karena itu lebih baik menggunakan konfigurasi SMTP server, dan untuk lebih mudah kita coba menggunakan SMTP server milik gmail.
Setup
Laravel memiliki dua file berbeda untuk mengkonfigurasi email yaitu config/mail.php atau file .env. Kita hanya perlu konfigurasi di salah satunya saja. Untuk ini kita coba setting di file .env.
Lalu lihat bagian :
1 2 3 4 5 6 | MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null |
edit menjadi seperti ini :
1 2 3 4 5 6 | MAIL_DRIVER=smtp MAIL_HOST=smtp.googlemail.com MAIL_PORT=465 MAIL_USERNAME=ENTER_YOUR_GMAIL_USERNAME MAIL_PASSWORD=ENTER_YOUR_GMAIL_PASSWORD MAIL_ENCRYPTION=ssl |
Disitu kita set mail menggunakan smtp gmail dan smtp port gmail 465 dan enkripsi ssl.
Jika sudah, kita juga perlu mengubah setting pada gmail. Login menggunakan akun google lalu klik my account. Lalu akan menampilkan seperti ini :
lalu klik Sign-in & Security
Pada halaman tersebut scroll ke bawah untuk mengaktifkan “Allow Less secure apps”
Kirim email di laravel
setelah melakukan setup diatas, disisi laravel coding yang perlu dilakukan :
$data = array(‘name’=>”Sam Jose”, “body” => “Test mail”);
1 2 3 4 5 | Mail::send('emails.mail', $data, function($message) { $message->to('siapa@gmail.com', 'alfach.com') ->subject('Test email dari laravel'); $message->from('fachrie@gmail.com','Achmad Fachrie'); }); |
pada code diatas kita menggunakan template email di resources/views/emails/email.blade.php yang yang diisi dengan template sederhana :
1 2 3 | Hi <strong>{{ $name }}</strong>, {{ $body }} |
mau tanya, kenapa ya atirbut from selalu diisi alamat email dari .env, padahal di aplikasi sudah saya sebutkan from nya dari alamat email yg lain. terima kasih