Halo teman-teman semuanya, pada kesempatan kali ini kita semua akan belajar bagaimana cara mengirim email di Laravel,
Laravel merupakan framework dengan fitur terlengkap. Salah satunya adalah adanya fitur Laravel Mail yang dapat memudahkan Kita mengirim email langsung dari website. Tapi, bagaimana cara kirim email dengan Laravel ya?
Pada kesempatan pertama ini kita semua akan belajar bagaimana cara installasi Framework Laravelnya terlebih dahulu, langsung saja kita mulai.
Langkah 1 - Install Framework Laravel
Silahkan masuk ke dalam folder dimana teman-teman akan menyimpan projectnya dan jalankan perintah berikut ini di dalam terminal/CMD :
composer create-project --prefer-dist laravel/laravel:^9.1 laravel-mail
CATATAN : laravel-mail
adalah nama dari projeck kita.
Perintah di atas akan membuat project Laravel baru dengan versi 9.x Silahkan tunggu proses installasi sampai selesai dan pastikan teman-teman harus terhubung dengan internet, karena semua paket akan diunduh secara online.
Setelah proses installasi selesai, sekarang kita akan belajar untuk menjalankan project Laravel-nya. Silahkan jalankan perintah berikut ini di dalam terminal/CMD :
cd laravel-mail
Perintah cd di atas digunakan untuk melakukan navigasi ke dalam sebuah folder, dalam contoh di atas kita akan masuk ke dalam folder laravel-mail. Setelah berhasil masuk ke dalam folder project Laravel, sekarang silahkan jalankan perintah berikut ini di dalam terminal/CMD :
php artisan serve
Jika perintah di atas berhasil dijalankan, maka project Laravel akan dijalankan pada port 8000 di dalam localhost. Kita bisa membukanya di dalam browser dengan http://localhost:8000 dan jika berhasil, maka hasilnya seperti berikut ini.
Langkah 3 - Konfigurasi .env
Tahap konfigurasi adalah tahap yang paling penting dalam tutorial cara kirim email dengan Laravel. Kemungkinan besar error yang akan kita alami berasal dari tahap ini. Jadi, simak dengan teliti, ya :smile:
Silahkan buka project Laravel-nya menggunakan Text Editor dan cari file .env
dan kode berikut ini.
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
Kemudian, silahkan ubah menjadi seperti berikut ini.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=emailkita@gmail.com
MAIL_PASSWORD=passwordkita
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=emailkita@gmail.com
MAIL_FROM_NAME=”${APP_NAME}”
Dari perubahan kode di atas, kita melakukan konfigurasi akun gmail yang akan kita gunakan nanti, yaitu menggunakan smtp.gmail.com
port 587
.
Catatan : port
bisa menggunakan 587
atau 465
Pastikan untuk mengaktifkan pengaturan Google Keamanan pada akun Gmail Kita. Caranya, masuk ke halaman Kelola Akun Google Anda, lalu klik Keamanan. Scroll ke bawah sampai Kita menemukan bagian Akses aplikasi yang kurang aman, set menjadi Nonaktif seperti gambar di bawah ini.
Langkah 4 - Membuat Mail Class
Sekarang kita akan belajar membuat Mail Class untuk pengiriman email
Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.
php artisan make:mail SendEmail
setelah berhasil menjalankan perintah tersebut kita akan mendapatkan sebuah file baru pada project laravel kita, seperti gambar dibawah :
Silahkan buka file SendEmail.php dan ubah kode-nya menjadi seperti berikut ini.
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class SendEmail extends Mailable
{
use Queueable, SerializesModels;
public $data;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('Testing Kirim Email')
->view('emails.sendemail');
}
}
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.
Setelah berhasil membuat Mail Class, sekarang kita lanjutkan membuat tampilan email yang akan dikirimkan atau disebut dengan blade view. Silahkan buat folder baru dengan nama emails
di dalam folder resources/views
, kemudian di dalam folder emails
silahkan buat file baru dengan nama sendemail.blade.php
dan masukkan kode berikut ini :
<!DOCTYPE html>
<html>
<head>
<title>santrikoding.com</title>
</head>
<body>
<h3>{{ $data['name'] }}</h3>
<h4>{{ $data['body'] }}</h4>
<p>Terimakasih</p>
</body>
</html>
Langkah 6 - Membuat Route
sekarang kita lanjutkan untuk membuat route-nya. Silahkan buka file routes/web.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.
<?php
use Illuminate\Support\Facades\Mail;
use App\Mail\SendEmail;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('/send-email',function(){
$data = [
'name' => 'Syahrizal As',
'body' => 'Testing Kirim Email di Santri Koding'
];
Mail::to('emailtujuan@gmail.com')->send(new SendEmail($data));
dd("Email Berhasil dikirim.");
});
Dari penambahan kode di atas, pertama-tama kita import Facades Mail dan memanggil Class Mailable SendMail.
use Illuminate\Support\Facades\Mail;
use App\Mail\SendEmail;
diatas kita akan mengirim data ke dalam Mailable SendMail.
$data = [
'name' => 'Syahrizal As',
'body' => 'Testing Kirim Email di Santri Koding'
];
Email di atas akan di kirim ke alisadikinsyahrizal@gmail.com
sebagai contoh
Sekarang silahkan akses halaman http://localhost:8000/send-email. Dan jika berhasil maka akan menampilkan hasil seperti berikut ini.
Kita juga dapat langsung melakukan pengecekan pada alamat email penerima.
Sampai disini pembahasan bagaimana cara mengirim email di laravel menggunakan Gmail, semoga bermanfaat.
Terima Kasih