12 November 2015

Simple Konfigurasi Laravel Mail (Gmail dan Mailtrap)


Fitur email memang sangat dibutuhkan untuk sebuah aplikasi. Pada umumnya fungsi ini terdapat pada saat user daftar atau sign up di seuatu Aplikasi, pada saat konfirmasi user, entah itu approve atau decline, ada juga pada saat forgot password. Apalagi di suatu aplikasi forum, atau mailing list. Pasti sangat diperlukan bahkan wajib ada untuk feature mail ini.

Pada kesempatan kali ini, saya akan berbagi sedikit tutorial mengenai Mailer pada Laravel Framework. Laravel sendiri sudah menyediakan driver untuk SMTP, Mailgun, Mandril, Amazon, SES, PHP Mail, dan sendmail. Menmungkinkan kita untuk mensetting dengan cepat konfigurasi email berbasis local ataupun cloud service.

Beberapa contoh configurasi driver mail pada Laravel:
Mailgun driver:
'mailgun' => [
    'domain' => 'your-mailgun-domain',
    'secret' => 'your-mailgun-key',
],
Mandrill driver:
 'mandrill' => [
    'secret' => 'your-mandrill-key',
],
Untuk menggunakan kedua contoh tersebut Anda harus menginstall Guzzle terlebih dahulu. Caranya tambahkan
"guzzlehttp/guzzle": "~5.3|~6.0"
pada composer.json file. jalankan perintah composer update.
Kemudian buka config/mail.php, konfigurasikan ke salah satu driver diatas, misal mailgun, atau mandrill. Lalu buka file config/services.php. Konfigurasikan user/domain Anda disitu.
Namun, sepertinya driver-driver di atas kurang familiar yah? Ya, memang. Kita coba untuk yang sering kita pakai saja, Misal gmail, yahoo,dan lain sebagainya, atau kita gunakan fake mail di mailtrap.io untuk fase testing.

Tutorial untuk setting Mail pada mailtrap.io

1. Buka website resmi mailtrap.io.
2. Daftar dahulu untuk mendapatakan konfigurasi mailnya.
gambar credentials mailtrap.io

3. Buka konfigurasi .env Anda.
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=(username)
MAIL_PASSWORD=(password)
MAIL_ENCRYPTION=tls 
4. Sekarang kita bikin contoh layout untuk layout emailnya ya. Buat folder layouts pada views. Buat file email.blade.php
<p>Anda mendapatkan email dari sistem</p>
<ul>
    <li>Nama Lengkap : {{ $data->nama_lengkap }}</li>
    <li>Tanggal Lahir : {{$data->tgl_lahir}}</li>
    <li>Username : {{$data->username}}</li>
    <li>Password : ************* </li>
</ul>
<p><a href="#">Silahkan klik tautan ini untuk login</a></p>
buatlah sesuai kebutuhan kalian, kode di atas hanya contoh saja, hehe.
penjelasan {{$data-&gt;nama_lengkap}} nanti dibahas di function emailnya.
5. Kemudian buatlah suatu function untuk mengirim email pada controller Anda.
use Mail;
public function sendMail(){
$data = new /stdClass();
$data->nama_lengkap = "Brillian Musyafa";
$data->tgl_lahir = "17-08-1945";
$data->username = "brillian";
Mail::send('layouts/email', ['data' => $data], function ($m) use ($data) {
$m-&gt;from('brillianmusyafa@gmail.com','brillian');
$m-&gt;to('brillianmusyafa@gmail.com','brillian')->subject('Your Reminder!');
});
}
$data diatas saya asumsikan Anda sudah membuat suatu form lemparan ke action ini, hehe.
jangan lupa buat routing untuk sendMail ya. Misal:
Route::get('sendMail','yourcontroller@sendMail'');


6. Hasilnya ketika fungsi tersebut dipanggil:


gambar inbox mailtrap.io

7. Done, selesai sudah untuk konfigurasi dan send function di Laravel menggunakan service mailtrap.io

Tutorial dengan Gmail

Jika ingin menggunakan service dari gmail. Anda harus mengkonfigurasi .env seperti ini:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=(username@gmail.com)
MAIL_PASSWORD=(password gmail)
MAIL_ENCRYPTION=tls
Kemudian panggil function di atas yang sudah kita buat. Maka email akan terkirim ke penerima. :)
Problem: Ketika terdapat Error pada settingan gmail solusinya:
Kemungkinan gmail Anda tidak memperbolehkan aplikasi lain untuk mengakses email Anda.

Caranya?

1. Buka https://security.google.com/settings/security/apppasswords
2. Selengkapnya disini. (update)
3. Tambahkan aplikasi untuk mendapatkan new password generate dari gmail.
4. Pakai password tersebut untuk setting .env di MAIL_PASSWORD

Sekian tutorial sederhana dari saya tentang Mail pada Laravel. Jika ada kesulitan atau ada yang ingin ditanyakan bisa langsung komentar di bawah ini.

No comments: