Mengirim email dengan Laravel 5.3

Salah satu penambahan yang ada di laravel 5.3 adalah pada bagian untuk mengirim email. Pada versi ini diperkenalkan metode baru untuk mengirim email, yaitu dengan mailable class. Jika sebelumnya untuk mengirim email kita membuat script/fungsi seperti berikut:

Mail::send('template.email', 'pesan' => $message], function ($message)
{
    $message->from('[email protected]', 'Email bro');
    $message->to('[email protected]');
});

Pada laravel versi 5.3 semua konfigurasi untuk data email yang dituji, dari alamat email, template email dan lain-lain bisa dimasukan ke dalam sebuah class. Sehingga untuk mengirim email cukup panggil:

Mail::to('[email protected]')->send(new EmailClass);

Jelas sekali kalau versi baru ini method yang dipanggil akan lebih simple, clean dan nyaman dilihat.
Sebelum masuk ke kode untuk mengirim email, jangan lupa lakukan dahulu konfigurasi layanan email yang akan digunakan. Pada contoh ini untuk mudahnya saja bisa gunakan layanan default yang sudah disertakan pada file konfigurasi laravel (.env) yaitu mailtrap.io. Jangan lupa daftar terlebih dahulu untuk mendapatkan username dan password yang harus kita masukan pada konfigurasi

 MAIL_DRIVER=smtp
 MAIL_HOST=mailtrap.io
 MAIL_PORT=2525
 MAIL_USERNAME=[didapatkan setelah mendaftar]
 MAIL_PASSWORD=[didapatkan setelah mendaftar]
 MAIL_ENCRYPTION=null

Kemudian edit juga config/mail.php pada bagian mail host dan port nya dengan menghilangkan parameter value defaultnya.

 'host' => env('MAIL_HOST'),
 'port' => env('MAIL_PORT'),

Setelah itu hal selanjutnya yang perlu dibuat adalah mailable classnya, class ini lah yang akan meng-handle semua konfigurasi email yang akan dikirimkan. Untuk membuatnya cukup jalankan:
php artisan make:mail EmailClass

Kalau kita buka file app/Mail/EmailClass.php isinya kurang lebih seperti berikut
namespace App\Mail;

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

class EmailClass extends Mailable
{
    use Queueable, SerializesModels;

    /**
    * Create a new message instance.
    *
    * @return void
    */
    public function __construct()
    {
        //
    }

    /**
    * Build the message.
    *
    * @return $this
    */
    public function build()
    {
        return $this->view('view.name');
    }
}

Di bagian method build() inilah kita bisa melakukan konfigurasi untuk email yang akan kita kirimkan. Contohnya seperti berikut:

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

Setelah itu di controller pada method yang akan bertugas mengirim email kita tambahkan:

Mail::to('[email protected]')->send(new EmailClass);

Oiya, jangan lupa buat dahulu template pesan untuk email yang akan dikirim, pada contoh ini buat file resources/view/email/template.php, isinya bisa bebas saja.
<h1>Ini contoh kirim email</h1>

Jika mau lebih singkat, lakukan saja di route nya, wong ini juga cuma uji coba saja, edit routes/web.php jika proses ingin dilakukan via web atau routes/api.php jika ingin melakukan proses via API.

use App\Mail\EmailCLass;
Route::get('/send', function() {
    Mail::to('[email protected]')->send(new EmailClass);

    return "Sukses";
});

Kemudian jalankan:
php artisan serve

dan panggil halaman berikut di browser http://127.0.0.1:8000/send

Jika berhasil maka anda akan menerima email di dalam inbox mailtrap.io.

2 komentar pada "Mengirim email dengan Laravel 5.3"

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *