• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang

Contoh Penggunaan Mail Queue di Laravel 5

Last Updated on 13 March 2018 By tommy 2 Comments

Bila anda mengikut tutorial yang ada di Mengirim Email dengan Mailables di Laravel 5.4, anda tentu merasa proses pendaftaran user baru terasa lambat, karena disitu juga Laravel langsung mengirim email notifikasi. Solusinya adalah dengan menggunakan queue (antrian) yang sudah menjadi bawaan standart Laravel.

Contoh mengirim email di Laravel 5.6 ditambah dengan queue

Install Laravel 5.6

Disini saya akan menggunakan Laravel 5.6. Buat project baru

composer create-project --prefer-dist laravel/laravel laravel

Pindah ke direktori laravel yang baru dibuat, lalu install guzzle

cd laravel;
composer require guzzlehttp/guzzle

Setting .env

yang perlu anda ubah di .env adalah bagian dibawah ini, sesuaikan database anda dan juga username/password dari mailtrap.io

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=null
 
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

satu lagi yang wajib adalah ubah QUEUE_DRIVER=sync menjadi QUEUE_DRIVER=database

Generate queue table dan authentikasi

php artisan queue:table
php artisan make:auth

lalu jalankan migrate agar database tersebut dimasukkan kedalam database.

php artisan migrate

Bila kita mengakses http://localhost/laravel/public/, kita sudah bisa membuat akun baru
laravel new page

Tiap user yang mendaftar kita akan mengirim email ke alamat email yang didaftarkan.

Membuat mailable

Kita akan membuat mailable untuk mengirim email ke orang yang mendaftar disitus Laravel yang kita buat.

php artisan make:mail PendaftaranUser

perintah diatas akan menggenerate template standart untuk mengirim email. Letaknya ada di folder app/Mail/. Ubah PendaftaranUser.php menjadi

<?php
 
namespace App\Mail;
 
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
 
class PendaftaranUser extends Mailable {
	use Queueable, SerializesModels;
	public $user;
	/**
	 * Create a new message instance.
	 *
	 * @return void
	 */
	public function __construct($user) {
		$this->user = $user;
	}
 
	/**
	 * Build the message.
	 *
	 * @return $this
	 */
	public function build() {
		return $this->view('email.pendaftaranuser');
	}
}

template email yang dikirim akan kita simpan di folder resources/views/email. Buat file pendaftaranuser.blade.php di folder tersebut yang isinya

Hai, {{ $user->name }},<br>
 
terimakasih telah bergabung bersama <a href="https://jaranguda.com">jaranguda.com</a>

Ubah RegisterController.php

Ubah file app/Http/Controllers/Auth/RegisterController.php menjadi

<?php
 
namespace App\Http\Controllers\Auth;
 
use App\Http\Controllers\Controller;
use App\Mail\PendaftaranUser;
use App\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Validator;
 
class RegisterController extends Controller {
	/*
		    |--------------------------------------------------------------------------
		    | Register Controller
		    |--------------------------------------------------------------------------
		    |
		    | This controller handles the registration of new users as well as their
		    | validation and creation. By default this controller uses a trait to
		    | provide this functionality without requiring any additional code.
		    |
	*/
 
	use RegistersUsers;
 
	/**
	 * Where to redirect users after registration.
	 *
	 * @var string
	 */
	protected $redirectTo = '/home';
 
	/**
	 * Create a new controller instance.
	 *
	 * @return void
	 */
	public function __construct() {
		$this->middleware('guest');
	}
 
	/**
	 * Get a validator for an incoming registration request.
	 *
	 * @param  array  $data
	 * @return \Illuminate\Contracts\Validation\Validator
	 */
	protected function validator(array $data) {
		return Validator::make($data, [
			'name' => 'required|string|max:255',
			'email' => 'required|string|email|max:255|unique:users',
			'password' => 'required|string|min:6|confirmed',
		]);
	}
 
	/**
	 * Create a new user instance after a valid registration.
	 *
	 * @param  array  $data
	 * @return \App\User
	 */
	protected function create(array $data) {
		$user = User::create([
			'name' => $data['name'],
			'email' => $data['email'],
			'password' => bcrypt($data['password']),
		]);
		\Mail::to($data['email'])->send(new PendaftaranUser($user));
		return $user;
	}
}

Coba buat akun baru, lalu cek inbox anda di mailtrap
pendaftaran user baru

Membuat Queue

Agar aplikasi web yang kita buat lebih responsive ada baiknya proses pengiriman email kita jalankan dibackground, jadi user akan merasa proses pendaftarannya lebih cepat karena tidak ada jeda dalam pengiriman email.

Cara standart untuk mengirim email ke queue, cukup mengubah send() menjadi queue(), sehingga function create() di RegisterController.php menjadi

	protected function create(array $data) {
		$user = User::create([
			'name' => $data['name'],
			'email' => $data['email'],
			'password' => bcrypt($data['password']),
		]);
		\Mail::to($data['email'])->queue(new PendaftaranUser($user));
		return $user;
	}

sebelum membuat akun baru, jalankan dari command line

php artisan queue:work

Coba buat akun baru, nanti di terminal anda akan muncul kira-kira

[2018-02-23 14:59:59][1] Processing: App\Mail\PendaftaranUser
[2018-02-23 15:00:02][1] Processed: App\Mail\PendaftaranUser

semua proses queue tersebut dimasukkan kedalam tabel jobs di database

Sampai disini usai sudah proses penggunaan queue mail di Laravel 5.6

Last Updated on 13 March 2018 by tommy

Tulisan menarik lainnya

  • Mengirim Email dengan Mailables di Laravel 5.4

    Mengirim email dengan Laravel sangat-sangat mudah, hanya butuh beberapa baris kode, seperti sulap email bisa…

  • Contoh Script PHP CRUD di Laravel 5.5

    Untuk pembejalaran pembuat aplikasi CRUD (Create, Read, Update, Delete) di Laravel 5.5 kita akan membuat…

  • Contoh Penggunaan preg_match_all di PHP

    Udah baca dokumentasi PHP tetapi masih bingung cara menggunakan preg_match_all? Coba ikuti tutorial dibawah ini,…

  • Contoh Global Helper di Laravel 5.2

    Laravel 5.2 punya banyak fungsi yang termasuk global helper, global helper disini maksudnya fungsi yang…

Filed Under: PHP Tagged With: Laravel 5.6, Queue

Reader Interactions

Comments

  1. Bain says

    12 September 2020 at 23:15

    Brati fungsi konfirmasi email bawaan laravel sudah tidak terpakai ya kalau pakai queue?

    Reply
    • tommy says

      13 September 2020 at 14:55

      Masih tetap terpake, emailnya yang di queue

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Pencarian

Tanya Jawab tentang DevOps SRE CPE, gabung di https://t.me/devopsindonesia

Terbaru

  • Cara Mengganti Port Screen Sharing macOS
  • Cara Menonaktifkan Pager di macOS
  • Cara Mengupdate Nama Apple silicon-as-a-Service Scaleway
  • Cara Force Delete Namespace di Kubernetes
  • Install PHP MariaDB di Mac Monterey

Komentar

  • mazda on Tutorial Lengkap Install Mail Server Postfix Dovecot MariaDB di CentOS 7
  • adi on Menggunakan Mikrotik Sebagai SSH Client
  • aris u on Solusi Simple Queue Mikrotik Tidak Berjalan
  • Bowo on Cara Mematikan SSID Molecool Balifiber
  • aris on Solusi Simple Queue Mikrotik Tidak Berjalan

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1.2m views
  • Password Terbaru ZTE F609 Indihome 784.5k views
  • Password Superadmin Huawei HG8245A 318.2k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 273k views
  • Cara Setting Wireless ZTE F609 Indihome 257.1k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 169.8k views
  • Akses UseeTV Indihome via Wireless ZTE F609 156.8k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 153.1k views
  • Cara Reset Password ZTE F609 Indihome 147.5k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 113.5k views

Kategori

  • Delphi
  • dll
  • Gambas
  • Internet
  • Java
  • Lazarus
  • Linux
  • PHP
  • Review
  • Teknologi

Sponsor

kadal.id
carakami.com
kuotabisa.com
Untuk jadi sponsor, hubungi kita lewat halaman sponsor
© 2021. Jaranguda
  • Linux
  • PHP
  • Internet
  • Teknologi
  • Delphi
  • Gambas
  • Java