Mengirim email dengan Laravel sangat-sangat mudah, hanya butuh beberapa baris kode, seperti sulap email bisa langsung dikirim. Email yang dikirim bisa menggunakan template, markdown ataupun plain text, sangat flexible. Untuk memudahkan mengenai pengiriman email di Laravel, kita akan membuat laravel mengirim email tiap kali ada user yang mendaftar.

Install Laravel

Install Laravel dengan composer

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

Setting .env

Disini kita akan menggunakan mailtrap, bagian yang perlu diubah adalah MAIL_USERNAME dan MAIL_PASSWORD

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

sesuaikan dengan credential mailtrap anda. Bila belum punya akun mailtrap daftar di mailtrap.io

Authentication

Laravel sudah bisa menghandle pendaftaran, login, dan reset password untuk user, yang perlu dilakukan adalah mengaktifkannya dari terminal

php artisan make:auth

Sebelum email bisa dikirim anda harus menginstall guzzle

composer require guzzlehttp/guzzle

Buat mailable dengan nama UserTerdaftar dengan

php artisan make:mail UserTerdaftar

Buka file app/Mail/UserTerdaftar.php ubah menjadi

<?php
 
namespace App\Mail;
 
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
 
class UserTerdaftar 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() {
        // view untuk email
		return $this->view('userbaru');
	}
}

Dibagian construct inilah yang membuat kita bisa mengirim data dari Controller ke (email) view Laravel.

Buat view (template) untuk email yang akan kita kirim resources/views/userbaru.blade.php

<h3>Hai, {{ $user->name }}</h3>
 
Email dikirim dari Laravel.

RegisterController Controller

Laravel menggunakan RegisterController untuk menghandle pendaftaran, jadi kita akan memodifikasi RegisterController untuk mengirim email begitu user mendaftar di website kita. Buka app/Http/Controllers/Auth/RegisterController.php dibagian atas tambah

use App\Mail\UserTerdaftar;

lalu ubah protected function create menjadi

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

Code lengkapnya bisa dilihat disini

Default Pengirim

Email yang dikirim masih menggunakan [email protected] untuk merubahnya buka config/mail.php edit bagian

    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],

Semua email yang dikirim dari web anda akan menggunakan alamat ini, bila anda ingin merubah from emailnya di UserTerdaftar.php ubah build() menjadi

return $this->from('[email protected]')
            ->view('userbaru');

Join the Conversation

2 Comments

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

  1. emailnya tidak terkirim ke alamat email tujuan, hanya terkerim ke inbox mailtrap.io…mohon bantuan dan penjelasanya
    Terimakasih