Laravel merupakan framework dengan fitur terlengkap. Salah satunya adalah adanya fitur Laravel Mail yang dapat memudahkan Anda mengirim email langsung dari website. Tapi, bagaimana cara kirim email dengan Laravel, ya?
Tak perlu khawatir. Kami sudah menyiapkan tutorial kirim email dengan Laravel di artikel ini. Baik yang menggunakan SMTP Gmail maupun SMTP hosting. Yuk, langsung saja simak penjelasan detailnya!
Cara Kirim Email dengan Laravel
Pada tutorial kirim email dengan Laravel ini, kami sudah membagi tahap konfigurasinya menjadi enam langkah sebagai berikut :
- Konfigurasi file .env
- Membuat Mail Class
- Membuat Blade View
- Membuat Mail Controller
- Menambahkan Route
- Berhasil Kirim Email
Nah, ini dia panduan lengkapnya..
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. Jadi, simak dengan teliti, ya 🙂
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.
Baca juga: Cara Install Laravel di Ubuntu
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
MAIL_USERNAME=emailanda@gmail.com
MAIL_PASSWORD=passwordanda
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=emailanda@gmail.com
MAIL_FROM_NAME=”${APP_NAME}”
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
MAIL_USERNAME=emailanda@domainanda.com
MAIL_PASSWORD=passwordwebmailanda
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=emailanda@domainanda.com
MAIL_FROM_NAME=”${APP_NAME}”
Cara kirim email Laravel menggunakan Gmail ataupun hosting hanya berbeda pada tahap konfigurasinya saja. Semua langkah berikutnya dapat diikuti oleh kedua jenis konfigurasi tersebut.
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('emailpenerima@gmail.com')->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, framework 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\MailController@index');
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 beberapa 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, tulis nama app pada kolom yang tersedia sesuai dengan keinginan Anda, kemudian klik Generate.
Ketiga, saat muncul tampilan bahwa password sudah di-generate, Anda dapat memasukkan password ini ke bagian MAIL_PASSWORD di file .env
Keempat, buka terminal, dan jalankan perintah php artisan config:cache
. Seharusnya, email sudah dapat terkirim ke alamat penerima dengan baik.
Siap Kirim Email dengan Laravel?
Fitur Laravel mail cukup membantu untuk mengirimkan email langsung dari website. Untungnya, Anda sudah tahu cara kirim email dengan Laravel sesuai panduan di atas.
Anda dapat mengirim email Laravel menggunakan SMTP Gmail maupun SMTP hosting. Perbedaan keduanya, hanya pada tahap konfigurasi mail Laravel di file .env, kok.
Jadi, tunggu apa lagi? Ingin segera kirim email langsung dari website Anda, kan?
Oh iya, agar website dan email Anda dapat digunakan dengan lancar, jangan lupa gunakan layanan hosting terbaik, ya. Niagahoster menawarkan layanan hosting dengan beragam fitur lengkap dan harga terjangkau mulai Rp.27 ribu/bulan! Kemudian untuk layanan email dengan server tersendiri, Anda bisa juga berlangganan email hosting Indonesia.