Tidak jarang ketika mengembangkan aplikasi, terutama website dibutuhkan sebuah fitur untuk mengirimkan email kepada user. Sebagai contoh, biasanya fitur kirim email ini digunakan untuk konfirmasi akun, lupa password, dan lain sebagainya.
Lalu, bagaimana cara mengembangkan fitur kirim email ini menggunakan PHP dan Codeigniter 3?
Nah, pada artikel ini gua mau berbagi ke kalian bagaimana cara dasar membuat fitur kirim email menggunakan Codeigniter 3. Oke langsung aja ya…
Jadi disini gua mencoba menggunakan akun Gmail sebagai server SMTP. Ya..alasan nya jelas, karena ini free dan hampir semuanya sudah memiliki akun Gmail. Meskipun, ada beberapa batasannya ya, kalo ga salah salah satu batasan menggunakan SMTP Gmail gratis ini adalah dalam 1 hari hanya dapat mengirimkan email sebanyak 2000 kali (kalian bisa coba browsing lagi ya.., menurut gua, untuk skala user website yang masih menengah kebawah, apalagi kirim email ini hanya untuk, misal fitur “Lupa Password” itu sudah lebih dari cukup sih..



Sebelum mulai ngoding, install terlebih dahulu package atau library yang akan digunakan. Disini gua menggunakan package phpmailer yang dapat diinstall melalui composer.
Silahkan install package phpmailer didalam folder projek Codeigniter3 kalian ( [nama_projek_codeigniter]/ ) dengan command composer require phpmailer/phpmailer
Selanjutnya, buatlah file controller atau fungsi untuk proses kirim email di Codeigniter 3. Silahkan copy atau ketikkan kembali kodingan dibawah ini. Sesuaikan bagian username dan password dengan email dan password yang telah di generate pada tahapan sebelumnya.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
class Sendmail extends CI_Controller {
public function index()
{
//Create PHPMailer instance
$mail = new PHPMailer();
//Memberitahukan PHPMailer untuk menggunakan SMTP
$mail->isSMTP();
//Enable SMTP debugging
//Cocok digunakan pada environment development, untuk mengetahui error
//SMTP::DEBUG_OFF = off (for production use)
//SMTP::DEBUG_CLIENT = client messages
//SMTP::DEBUG_SERVER = client and server messages
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
//Set port SMTP yang ingin digunakan:
// - 465 for SMTP with implicit TLS, a.k.a. RFC8314 SMTPS or
// - 587 for SMTP+STARTTLS
$mail->Port = 465;
//Set mekanisme enkripsi data:
// - SMTPS (implicit TLS on port 465) or
// - STARTTLS (explicit TLS on port 587)
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
//Set true jika ingin menggunakan SMTP auth
$mail->SMTPAuth = true;
//Username untuk SMTP Auth - menggunakan alamat email yang akan dijadikan relay
$mail->Username = '[email_relay@kalian]';
//Password untuk SMTP Auth - password aplikasi yang digenerate melalui Google Account
$mail->Password = '[pass yang tadi gene]';
//Set alamat email dan username siapa yang mengirimkan email ini
$mail->setFrom('admin@kuhomi.id', 'Kuhomi.id');
//Set alamat email dan username tujuan
$mail->addAddress('rstechno15@gmail.com', 'Rstechno15');
//Set subject email
$mail->Subject = 'Mencoba mengirimkan email';
//Set isi content email
$mail->Body = 'Hallo Rstechno15, ini adalah test email';
//send the message, check for errors
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message sent!';
}
}
}
Jika sudah, silahkan jalankan fungsi tersebut melalui browser dan cek apakah email sudah berhasil terkirim atau belum.
Ini adalah kodingan dasar cara membuat fitur kirim email melalui Codeigniter 3. Kalian dapat menyesuaikan kembali dengan studi kasus kalian. Dengan package phpmailer ini, kalian juga dapat menambahkan attachment file atau membuat body email dengan tag html.
Sebagai catatan juga, tutorial ini dibuat berdasarkan dokumentasi penggunaan SMTP Gmail pada tahun 2023. Ada kemungkinan suatu saat nanti Google melakukan perubahan terkait cara penggunaan SMTP Gmail ini.