Laravel

Mengirim Email Dengan Laravel 5.3

Mengirim Email Dengan Laravel 5.3

2213 Dilihat

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.

Cara terbaik menjelaskan fitur ini 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.

Backend Developer iTechShark, salah satu perusahaan asal Amerika. Senang dengan teknologi baru. Laravel addict yang tidak fanatik. Merekam jejak dengan menulis

Membuat Repository Pattern Laravel 5.7 Laravel

Membuat Repository Pattern Laravel 5.7

Laravel hadir dengan berbagai fitur beserta kemudahan yang ditawarkan guna mempercepat proses development, namun bukan berarti hal itu membuat kita menjadi programmer "pemakai" tanpa memikirkan dan be...

Membuat Aplikasi Invoice Laravel 5.7 #6: Laporan Laravel

Membuat Aplikasi Invoice Laravel 5.7 #6:...

Melanjutkan serial belajar Laravel basic dengan terjun langsung untuk membuat sebuah aplikasi, dan serial ini merupakan seri terakhir yakni membuat laporan dalam bentuk PDF. Berikut ada materi bagaima...

Membuat Aplikasi Invoice Laravel 5.7 #5: Manage Invoice & Authentication Laravel

Membuat Aplikasi Invoice Laravel 5.7 #5:...

Setelah sekian lama jeda karena tidak dapat kesempatan untuk menulis, sehingga ada beberapa part konsep dari artikel ini yang hilang begitu saja. Pada kesempatan kali ini kita akan membahas cara Membu...

Komentar