~ We are changing the world with technology. ~

Matt Mullenweg

Mengirim Email Dengan Laravel 5.3

Mengirim Email Dengan Laravel 5.3

3292 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

Aplikasi Laundry (Laravel 5.8 - Vue.js - SPA) #8: Manage Customers Laravel VueJS

Aplikasi Laundry (Laravel 5.8 - Vue.js -...

Pelanggan menjadi bagian yang penting dari sebuah perusahaan laundry, maka fitur yang akan dikerjakan pada serial ini adalah sebuah fitur untuk mengelola pelanggan. Adapun schema yang dirancang dimana...

Aplikasi Laundry (Laravel 5.8 - Vue.js - SPA) #7: Push Notification Expenses Laravel VueJS

Aplikasi Laundry (Laravel 5.8 - Vue.js -...

Dalam setiap kegiatan berwirausaha pasti terdapat biaya biaya yang harus dikeluarkan untuk menjalankan operasional dari usaha tersebut, maka dalam aplikasi ini, kita tidak hanya akan mencatat transaks...

Aplikasi Laundry (Laravel 5.8 - Vue.js - SPA) #6: Role & User Permissions Laravel VueJS

Aplikasi Laundry (Laravel 5.8 - Vue.js -...

Sambil menikmati secangkir kopi ini, kutuliskan serial lanjutan membuat Aplikasi Laundry menggunakan Laravel 5.8 & Vue.js dengan metode SPA (Single Page Application) yang telah memasuki serial ke-6 ny...

Komentar