Mengirim Email Dengan Laravel 5.3

Mengirim Email Dengan Laravel 5.3

Terdapat fitur yang menarik pada laravel 5.3 yang dapat memudahkan anda dalam mengirim email menggunakan class mailable yang secara spesifik menangani urusan per-email-an.

Adapun cara terbaik untuk menjelaskan fitur ini adalah dengan menggunakan sebuah contoh kasus. Pada laravel 5.2 kita biasa mengirim email seperti berikut sebagaimana yang di jelaskan pada dokumentasi laravel.

Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) {
    $m->from('[email protected]', 'Daengweb Application');
    $m->to($user->email, $user->name)->subject('Daengweb Reminder!');
});

Pada baris kode diatas terdapat sekelumit persiapan yang akan lakukan sebelum mengirim email. Dimulai dengan passing data ke view, menggunakan “user” sebagai clousure dan terakhir mengaturan pesan email yang akan dikirim.

Pada laravel 5.3, anda tidak perlu melakukan semua itu. Caranya cukup dibuat sederhana dan tentunya mudah digunakan menggunakan mailable class.

php artisan make:mail DaengwebEmail

Kemudian buka file class yang telah di buat (jika bingung, dapat di temukan pada App\Mail), kemudian anda akan mendapatkan sebuah konfigurasi yang siap digunakan. Dalam hal ini anda dapat menggunakan beberapa metode form, subject, view & attachment. Berikut contoh sederhana dalam menggunakan mailable class pada laravel 5.3 :

public function build()
{
   return $this->from('[email protected]')->view('email');
}

dan jika pengaturan yang dibutuhkan sudah siap, anda dapat mengirim email hanya dengan satu sentuhan :

Mail::to($email)->send(new DaengwebEmail);

Contoh kasus

Kasus kali ini kita belajar bagaimana menerapkan fungsi mailable pada halaman registrasi. Cukup sederhana alurnya, dimana saat user melakukan registrasi secara otomatis akan mendapatkan kiriman email.

Langkah pertama setup konfigurasi mail server pada file .env

MAIL_DRIVER=smtp
MAIL_HOST=host.serveremailanda.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=passwordemailanda
MAIL_ENCRYPTION=ssl

selanjutnya buat form registrasi terlebih dahulu, pada view buat sebuah file dengan nama registrasi.blade.php

<form action="{{ url('registrasi') }}" method="POST">
<input name="_token" type="hidden" value="{{ csrf_token() }}">

<input type="text" name="nama" placeholder="Nama Lengkap">
<input type="email" name="email" placeholder="[email protected]">
<button type="submit">Registrasi</button>
</form>

Lalu tambahkan route berikut :

Route::get('/', function () {
  return view('registrasi');
});

Form registrasi sederhana kita telah jadi. Saatnya membuat persiapan untuk mengirim email. jalankan command :

php artisan make:mail RegistrasiEmail

Kemudian buka file RegistrasiEmail pada folder App\Mail lalu pada method build, ketikkan kode berikut :

public $registrasi;
public function __construct($registrasi)
{
   $this->registrasi = $registrasi;
}

Lalu pada method build ketikkan kode berikut :

public function build()
{
   return $this->from('[email protected]')->view('email.registrasi')->with([
     'nama' => $this->registrasi
   ]);
}

sehingga akan tampak seperti ini :

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class RegistrasiEmail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    
    public $registrasi;

    public function __construct($registrasi)
    {
        $this->registrasi = $registrasi;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('[email protected]')
        ->view('email.registrasi')
        ->with([
            'nama'  => $this->registrasi
        ]);
    }
}

Selanjutnya buat folder email, juga buat file blade dengan nama registrasi.blade.php, file ini berisi badan email yang akan kirim. Sederhananya kita buat seperti ini saja :

Halo Selamat datang {{ $nama }}

Persiapan telah selesai, saatnya untuk membuat route post yang digunakan untuk proses data yang diterima :

Route::post('/registrasi', function() {
  $email = Request::input('email');
  $registrasi = Request::input('nama');
  Mail::to($email)->send(new App\Mail\RegistrasiEmail($registrasi));
  return 'Registrasi berhasil';
});

Lakukan testing untuk metode yang telah di buat. Akses app anda dengan url localhost/folderapp/public atau jika menggunakan artisan gunakan url localhost:8000 . kemudian coba lakukan registrasi maka seharusnya akan seperti berikut

Proses registrasi berhasil dan secara otomatis akan mengirimkan email registrasi.

Email juga telah diterima. Mengakhiri tutorial mengirim email dengan laravel menggunakan mailable. Untuk explore lebih jauh lagi semisal attachment, dll akan dibahas pada tutorial selanjutnya. terima kasih.

Category:
Share:

Comments