Mengirim Email di Laravel
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 !