Panduan Lengkap Cara Kirim Email dengan Laravel

Cara Kirim Email dengan Laravel
Pada tutorial kirim email dengan Laravel ini, kami sudah membagi tahap konfigurasinya menjadi enam langkah sebagai berikut :

  1. Konfigurasi file .env
  2. Membuat Mail Class
  3. Membuat Blade View
  4. Membuat Mail Controller
  5. Menambahkan Route
  6. Berhasil Kirim Email

1. Konfigurasi File .env
Tahap konfigurasi adalah tahap yang paling penting dalam panduan cara kirim email dengan Laravel. Kemungkinan besar error yang akan Anda alami berasal dari tahap ini.

Pada langkah pertama ini, silahkan buka project Laravel Anda dengan cara login ke cPanel dan masuk ke menu File Manager. Lalu masuk ke folder public_html untuk mengakses project Laravel.

Temukan file .env pada direktori root project Laravel. Jika tidak ada, Anda dapat menemukannya dengan klik setting pada bagian kanan atas layar File Manager. Lalu ceklis pada menu Show Hidden Files.

Klik kanan pada file .env lalu pilih Edit. Jika Anda masih tidak menemukan file .env dan hanya ada file .env.example, rename saja file tersebut menjadi .env lalu pilih edit file.

Nah, karena ada konfigurasi berbeda untuk SMTP Gmail dan SMTP hosting, Kami akan membahasnya masing-masing.

Pilihlah sesuai kebutuhan dan siapkan akun Gmail Anda jika akan menggunakan SMTP Gmail.

1. 1. Konfigurasi Kirim Email Laravel via Gmail
Pertama-tama, scroll file .env dan temukan bagian konfigurasi mail. Lalu, sesuaikan isinya seperti ini :

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=passwordanda
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME=”${APP_NAME}”
Pastikan untuk mengaktifkan pengaturan Google Security pada akun Gmail Anda. Caranya, masuk ke halaman Google Account, lalu klik Security. Scroll ke bawah sampai Anda menemukan bagian Less secure app access, set menjadi On seperti gambar di bawah ini.

1. 2. Konfigurasi Kirim Email Laravel via Hosting
Jika anda ingin menggunakan SMTP hosting, langsung saja edit file .env dan sesuaikan konfigurasi mailnya seperti ini :

MAIL_DRIVER=smtp
MAIL_HOST=mail.domainanda.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=passwordwebmailanda
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME=”${APP_NAME}”

2. Membuat Mail Class
Langkah berikutnya dari cara kirim email dengan Laravel adalah membuat mail class MyTestMail untuk pengiriman email.

Disini Anda perlu menulis kode untuk membentuk struktur email maupun memanggil view yang akan ditampilkan pada email. Untuk membuat class Mailable, silahkan buka terminal, lalu jalankan command berikut :

php artisan make:mail MyTestMail
Command tersebut akan membuat file MyTestMail pada app/Mail/MyTestMail.php.

<?php

namespace App\Mail;

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

class MyTestMail extends Mailable
{
use Queueable, SerializesModels;

public $details;

/**
* Create a new message instance.
*
* @return void
*/
public function __construct($details)
{
$this->details = $details;
}

/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject(‘Mail from websitepercobaan.com’)
->view(’emails.myTestMail’);
}
}

Ada 2 method penting dalam class ini, yaitu method __construct dan build:

  • Method function __construct() digunakan untuk menginisialisasi objek yang digunakan pada template email.
  • Method function build() digunakan untuk mengatur struktur email yang lebih spesifik seperti melakukan konfigurasi pengirim email, menampilkan template email dan menambahkan attachment.

3. Membuat Blade View
Selanjutnya, Anda harus membuat tampilan email yang akan dikirimkan atau disebut dengan blade view. Untuk membuat blade view, masuk ke dalam folder resources/views, lalu buatlah folder dengan nama emails. Kemudian buatlah file dengan nama myTestMail.blade.php di dalam folder emails.

<!DOCTYPE html>
<html>
<head>
<title>websitepercobaan.com</title>
</head>
<body>
<h1>{{ $details[‘title’] }}</h1>
<p>{{ $details[‘body’] }}</p>

<p>Thank you</p>
</body>
</html>

4. Membuat Mail Controller
Sekarang, buatlah controller baru dengan nama MailController.php dengan menjalankan perintah php artisan make:controller MailController pada terminal.

Anda juga dapat membuatnya dengan cara manual. Caranya, masuk ke app/Http/Controllers lalu buat file baru dalam folder controllers.

Jangan lupa, gunakan huruf kapital di awal nama controller sebagai format penulisannya, ya.

Buatlah file controller menjadi seperti ini.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Mail\MyTestMail;
use Illuminate\Support\Facades\Mail;

class MailController extends Controller
{

public function index(){

$details = [
‘title’ => ‘Mail from websitepercobaan.com’,
‘body’ => ‘This is for testing email using smtp’
];

\Mail::to(’[email protected]’)->send(new \App\Mail\MyTestMail($details));

dd(“Email sudah terkirim.”);

}
}
Karena kita menggunakan fitur mail pada controller, maka pastikan Anda menambahkan Facades Mail dan memanggil Class Mailable MyTestMail yang sudah dibuat pada langkah kedua tadi.

Pada method index(), Anda dapat langsung melakukan konfigurasi untuk penetapan alamat email penerima.

Pada contoh diatas, email hanya dikirimkan pada satu alamat penerima saja untuk melakukan testing. Namun tenang saja, Laravel mengizinkan Anda untuk dapat mengirim email lebih dari satu penerima kok.

5. Menambahkan Route
Langkah berikutnya dari tutorial kirim email dengan Laravel adalah menambahkan route untuk melakukan testing.

Caranya, dengan mengakses controller yang telah dibuat pada langkah sebelumnya. Anda bisa masuk ke folder routes, lalu edit file web.php, tambahkan route di bawah ini.

Route::get(‘kirim-email’,’App\Http\Controllers\[email protected]’);
Route tersebut akan menjalankan method index() pada MailController.php. Sesuaikan dengan nama controller dan method yang Anda buat ya.

6. Mengirim Email
Untuk melakukan test apakah email berhasil terkirim atau tidak, Anda dapat mengakses alamatwebsiteanda.com/kirim-email. Jika email berhasil terkirim, maka tampilan web akan menjadi seperti ini :

Anda juga dapat langsung melakukan pengecekan pada alamat email penerima.

Selamat, email sudah berhasil diterima!!

Bagaimana Mengatasi Error Jika Menggunakan SMTP Gmail?
Error yang paling sering terjadi disebabkan oleh ketidaktelitian pada tahap konfigurasi file .env, terutama jika Anda menggunakan SMTP gmail.

Jika Anda tidak dapat terhubung dengan akun Gmail dan mendapatkan error seperti gambar diatas, Anda dapat mengatasinya dengan menggunakan fitur App Passwords pada akun Google Anda.

App passwords akan membuatkan 16 karakter password yang dapat Anda gunakan pada SMTP. Hal ini tentu akan lebih aman, karena password akan berbeda dengan password login akun google Anda.

Untuk mengaktifkannya, ikuti lima langkah berikut :

Pertama, masuk ke pengaturan akun Google Anda, kemudian klik Security. Pilih menu Turn On 2-Step Verification, maka akan muncul satu kolom lagi dibawahnya, yaitu App Passwords.

Kedua, klik App password dan Anda akan diarahkan untuk memasukkan password akun gmail Anda. Jika sudah, pilih Mail pada field App dan Other untuk field device.

Ketiga, tulis nama app pada kolom yang tersedia sesuai dengan keinginan Anda, kemudian klik Generate.

Keempat, saat muncul tampilan bahwa password sudah di-generate, Anda dapat memasukkan password ini ke bagian MAIL_PASSWORD di file .env

Kelima, buka terminal, dan jalankan perintah php artisan config:cache. Seharusnya, email sudah dapat terkirim ke alamat penerima dengan baik.