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.
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.
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}ā
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('[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,Ā 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.
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.
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.
One Response