Mengirim Email di Laravel

Karindra Linux
3 min readDec 11, 2020

--

Menggunakan Facade Bawaan Laravel

Laravel memang menyediakan banyak fitur bawaan untuk dimanfaatkan agar proses develompment menjadi lebih mudah dan cepat, tidak terkecuali untuk fitur Mailing, tidak perlu banyak setup dan install ini itu, cukup dengan beberapa langkah, kita sudah bisa membuat fitur Mailing di project laravel kita.

# Membuat Mailable class

php artisan make:mail UserRegisteredMail -m emails.user-registered

Membuat class representasi sesuai kebutuhan Mailing, disini kita tambahkan option -m sebagai attribut agar selain membuat class Mailable juga akan mengenerate markdown / template view dari email yang akan dikirim.

UserRegisteredMail.php

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;

use Illuminate\Contracts\Queue\ShouldQueue;

use Illuminate\Mail\Mailable;

use Illuminate\Queue\SerializesModels;

class UserRegisteredMail 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->markdown(‘emails.user-registered’);

}

}

emails/user-registered.blade.php

@component(‘mail::message’)

# Introduction

The body of your message.

@component(‘mail::button’, [‘url’ => ‘’])

Button Text

@endcomponent

Thanks,<br>

{{ config(‘app.name’) }}

@endcomponent

Sampai disini kita sudah mendapatkan template Mailing yang kita butuhkan, kita bisa mengeceknya dengan membuat Route mereturn class Mailable tersebut, dan akan tampil seperti berikut

use App\Mail\UserRegisteredMail;

Route::get(‘/send-email’, function() {

return new UserRegisteredMail();

});

Kita juga dapat mengcustom tampilan template emailnya juga kok :D

# Menyiapkan Server SMTP

Kebetulan laravel yang saya gunakan saat ini yaitu versi 7, jadi kurang lebih isi .env bagian mail nya seperti berikut

MAIL_MAILER=smtp

MAIL_HOST=smtp.mailtrap.io

MAIL_PORT=2525

MAIL_USERNAME=null

MAIL_PASSWORD=null

MAIL_ENCRYPTION=null

MAIL_FROM_ADDRESS=null

MAIL_FROM_NAME=”${APP_NAME}”

Sekarang yang kita perlukan yaitu mensetup smtp ini, temen temen boleh memakai layanan mailing apapun seperti umumnya Gmail, Mailgun, Sendgrid, dsb. Tapi, saya disini menggunakan Mailtrap karena selain gratis dan setupnya mudah, juga lebih asik untuk testing development, karena dengan menggunakan Mailtrap kita tidak perlu merepotkan alamat email penerima dan pengirim(bisa menggunakan dummy email) karena nanti kita hanya fokus pada keberhasilan pengiriman emailnya.

# Mengirim Email

Haha, ini sedikit lucu, karena untuk mengirimkan email dengan cara ini sangat mudah untuk standard code nya bahkan hanya memerlukan 1 baris !

Mail::to($data[‘email’])->send(new UserRegisteredMail());

Ini dapat kita implementasikan sesuai kebutuhan, misal disini saya implementasikan email ini sebagai email konfirmasi akun user ketika setelah registrasi.

protected function create(array $data)

{

Mail::to($data[‘email’])->send(new UserRegisteredMail());

return User::create([

‘name’ => $data[‘name’],

‘email’ => $data[‘email’],

‘password’ => Hash::make($data[‘password’]),

]);

}

Simple kan, semoga bermanfaat !

--

--