Untuk mengirim email di Laravel sangat mudah. Behind the scene sebenarnya Laravel menggunakan SwiftMailer untuk mengirimkan email. Tersedia beberapa pilihan driver yang sudah bisa digunakan seperti menggunakan MailGun, Mandrill dan SMTP.

Kali ini kita akan bahas setup dan kirim email di Laravel 5 yang masih fresh. So, persiapkan Laravel 5.

Konfigurasi

Pertama kita ubah informasi email dan nama pengirim di config/mail.php.

'from' => ['address' => null, 'name' => null],

Untuk bisa mengirim email, anda bisa mengubahnya menjadi apapun. Tidak harus email asli anda. Misalnya kita ubah menjadi

'from' => [
    'address' => 'no-reply@example.org', 
    'name'    => 'No Reply'
],

Jika anda tidak menggunakan .env, anda bisa mengubah konfigurasi pada file config/mail.php atau system environment anda. Tapi disini saya akan memberi contoh dengan menggunakan .env. Lebih detail mengenai hal ini bisa anda baca di dokumentasi http://laravel.com/docs/master#environment-configuration .

By default setelah selesai instalasi, ada file .env. Buka dan edit file .env

MailTrap.io

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Jika anda mau menggunakan mailtrap.io yang sudah disediakan, langsung saja ubah username dan password. Bila belum punya, yaa daftar toh…

Mailtrap.io

Gmail

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465        # atau 587
MAIL_USERNAME=emailanda@gmail.com
MAIL_PASSWORD=password_email_anda
MAIL_ENCRYPTION=tls

Bagi pengguna 2-step authentication akan mendapatkan message dari Google. Tinggal ikut saja informasi dari message tersebut.

Detailnya bisa anda lihat di website Google https://support.google.com/a/answer/176600?hl=en

Yahoo

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mail.yahoo.com
MAIL_PORT=465        # atau 587
MAIL_USERNAME=emailanda@yahoo.com
MAIL_PASSWORD=password_email_anda
MAIL_ENCRYPTION=tls

Detail konfigurasi bisa anda lihat di website Yahoo https://help.yahoo.com/kb/SLN4724.html

Mandrill dan MailGun

Mandrill dan MailGun menyusul (ntah kapan). Mandrill dan MailGun bisa menggunakan API ataupun SMTP.

Zoho Mail

MAIL_DRIVER=smtp
MAIL_HOST=smtp.zoho.com
MAIL_PORT=587
MAIL_USERNAME=emailanda@yahoo.com
MAIL_PASSWORD=password_email_anda
MAIL_ENCRYPTION=tls

Detail informasi konfigurasi SMTP menggunakan Zoho bisa anda lihat di dokumentasinya https://www.zoho.com/mail/help/zoho-smtp.html

Driver “log”

MAIL_DRIVER=log

Saya biasa menggunakan driver log ini untuk development. Driver ini tidak benar-benar mengirimkan email, tapi hanya menulis ke log file di storage/logs, sehingga lebih cepat, aman dan bisa offline.

Laravel Mail Log

MailCatcher

MAIL_DRIVER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025

Selain menggunakan “log”, saya juga biasa menggunakan MailCatcher untuk melihat apakah email yang dikirimkan sudah sesuai tampilannya atau belum, tanpa harus terhubung ke internet. Dan ini proses-nya cukup cepat.

Detail bagaimana menggunakan MailCatcher bisa anda pelajari di mailcatcher.me

MailCatcher

Kirim email

Agar mudah, kita letakkan saja di app/Http/routes.php. Anda bisa meletakkannya dimanapun, tergantung dari bagaimana anda membuat struktur aplikasi anda.

Route::get('/', function()
{

    // Variable data ini yang berupa array ini akan bisa diakses di dalam "view".
    $data = ['prize' => 'Peke', 'total' => 3 ];

    // "emails.hello" adalah nama view.
    Mail::send('emails.hello', $data, function ($mail)
    {
      // Email dikirimkan ke address "momo@deviluke.com" 
      // dengan nama penerima "Momo Velia Deviluke"
      $mail->to('momo@deviluke', 'Momo Velia Deviluke');

      // Copy carbon dikirimkan ke address "haruna@sairenji" 
      // dengan nama penerima "Haruna Sairenji"
      $mail->cc('haruna@sairenji', 'Haruna Sairenji');

      $mail->subject('Hello World!');
    });

});

Sekarang kita buat view-nya pada resources/views/emails/hello.blade.php yang isinya

Anda mendapatkan hadiah {{ $total }} buah {{ $prize }}

Yup, sekarang buka jalankan php artisan serve, dan buka web browser.

Kesimpulan

Mengirim email menggunakan Laravel sangat mudah. Anda juga bisa memasukkan email ke queue dengan menggunakan facade Mail::queue() atau Mail::later().

Bila anda ingin mengirimkan hanya berupa plain text, anda bisa menggunakan Mail::plain(). Atau hanya bisa text pendek Mail::raw(). Atau bisa juga dengan memasukkan key,

`Mail::send(['plain' => 'view'], ...)`

Detailnya bisa anda pelajari di dokumentasi dan source code 😐 http://laravel.com/docs/master/mail

Oh, iya… seperti component lain yang ada di komunitas PHP lainnya seperti CakePHP, Symfony, Nette, Aura, Kohana, PHPixie dan Zend Framework; yang saling berbagi dan mengisi di komunitas PHP itu sendiri, anda juga bisa menggunakan mail component ini diluar Laravel.

Bila ada pertanyaan langsung saja di kolom komentar.

Iklan

10 pemikiran pada “Mengirim Email menggunakan Laravel

    1. Saya prefer menggunakan layanan yang full semuanya bisa saya kontrol. Misalnya seperti menggunakan VPS.

      Kalau shared hosting, saya gak suka. Beberapa cloud service saya juga nggak suka karena saya gak punya akses penuh.

  1. ane test pake akun zoho ane gan.. errornya begini..

    “Failed to authenticate on SMTP server with username “xxx@xxxxxxx.xxx” using 2 possible authenticators”

    kenapa ya?? sorry newbie

Tinggalkan Balasan

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s