Membuat Fitur Kirim Email pada CodeIgniter – Fitur ini digunakan untuk berkomunikasi antara user satu dengan yang lainnya maupun antara user dengan sistem aplikasi itu sendiri.
Salah satu cara supaya email yang dikirimkan dari website dapat diterima dengan baik dan tidak ditandai sebagai spam adalah dengan melakukan setting autentifikasi SMTP.
Untuk membuat fitur pengiriman email pada CodeIgniter kita bisa memanfaatkan SMTP Gmail.
Dengan memanfaatkan SMTP Gmail, sebenarnya kita menggunakan server email milik Google untuk mengirimkan email langsung dari aplikasi yang kita buat sehingga email tersebut lebih cepat sampai ke penerima.
Tutorial kirim email dengan SMTP Gmail CodeIgniter
Pada panduan kali ini, saya akan menjelaskan CodeIgniter email SMTP script menggunakan library SMTP PHPMailer.
1. Persiapan Project CodeIgniter
Disini saya menginstall Codeigniter dengan nama project “codeignitermail”.
2. Download library SMTP PHPMailer CodeIgniter
Silahkan download pada repository github yang bisa Anda jumpai pada link berikut:
https://github.com/bennyekop/SMTPphpMailerCITemplate
Repo tersebut merupakan template penggunaan library SMTP PHPMailer. Anda bebas melakukan fork/clone dan modifikasi sesuai kebutuhan.
3. Menambahkan Library PHPMailer
Buka file project yang sudah di download dari repository github di atas.
Lalu copy seluruh isi phpmailer yang terdapat pada direktori libraries, pindahakan ke dalam folder libraries project Anda, dapat dilihat pada gambar di bawah ini:
4. Mengaktifkan Google Security App password
Pastikan untuk mengaktifkan pengaturan Google Security pada akun Gmail Anda. Caranya, login terlebih dahulu ke akun google lalu masuk ke halaman Google Account, lalu klik Security.
Scroll ke bawah sampai Anda menemukan bagian App password seperti gambar di bawah ini:
Silahkan Anda klik App password. Selanjutnya di bagian Select app pilih Other (Custom name).
Selanjutnya akan muncul isian nama aplikasi, isi dengan nama Laravel. Lalu klik Generate.
Anda akan mendapatkan 16 karakter password.
Password tersebut yang akan kita gunakan untuk configurasi controller KirimEmail.php
di bagian code $mail->Password
. Controller KirimEmail.php yang akan kita buat di tahap selanjutnya.
5. Membuat Controller
Membuat controller dengan nama KirimEmail.php pada direktori: application/controllers/KirimEmail.php
Isi dari file controller KirimEmail.php adalah sebagai berikut:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
class KirimEmail extends CI_Controller {
public function __construct()
{
parent::__construct();
require APPPATH.'libraries/phpmailer/src/Exception.php';
require APPPATH.'libraries/phpmailer/src/PHPMailer.php';
require APPPATH.'libraries/phpmailer/src/SMTP.php';
}
public function index()
{
$this->load->view('form_email');
}
public function send()
{
// PHPMailer object
$response = false;
$mail = new PHPMailer();
// SMTP configuration
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'ari210393@gmail.com'; // user email anda
$mail->Password = 'mkapiuqignjzcyoz'; // diisi dengan App Password yang sudah di generate
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('ari210393@gmail.com', 'AYONGODING.COM'); // user email anda
$mail->addReplyTo('ari210393@gmail.com', ''); //user email anda
// Email subject
$mail->Subject = 'SMTP CodeIgniter | ayongoding.com'; //subject email
// Add a recipient
$mail->addAddress($this->input->post('email')); //email tujuan pengiriman email
// Set email format to HTML
$mail->isHTML(true);
// Email body content
$mailContent = "<p>Hallo <b>".$this->input->post('nama')."</b> berikut ini adalah komentar Anda:</p>
<table>
<tr>
<td>Nama</td>
<td>:</td>
<td>".$this->input->post('nama')."</td>
</tr>
<tr>
<td>Website</td>
<td>:</td>
<td>".$this->input->post('website')."</td>
</tr>
<tr>
<td>Komentar</td>
<td>:</td>
<td>".$this->input->post('komentar')."</td>
</tr>
</table>
<p>Terimakasih <b>".$this->input->post('nama')."</b> telah memberi komentar.</p>"; // isi email
$mail->Body = $mailContent;
// Send email
if(!$mail->send()){
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}else{
echo 'Message has been sent';
}
}
}
6. Membuat File View
Membuat file view untuk kirim email dengan nama formemail.php pada direktori: application/views/formemail.php
File view ini akan menampilkan form untuk isian beberapa data dan kemana email akan dikirim.
Kodenya sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tutorial SMTP CodeIgniter | ayongoding.com</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6">
<h3>Tutorial SMTP CodeIgniter | Tinggalkan Balasan</h3>
<form method="post" action="kirimemail/send">
<div class="form-group">
<label>Nama Lengkap</label>
<input class="form-control" type="text" name="nama">
</div>
<div class="form-group">
<label>Website</label>
<input class="form-control" type="text" name="website">
</div>
<div class="form-group">
<label>Komentar</label>
<textarea class="form-control" name="komentar" rows="4"></textarea>
</div>
<div class="form-group">
<label>Alamat Email Saya</label>
<input class="form-control" type="text" name="email">
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary">Kirim ke Email Saya</button>
</div>
</form>
</div>
</div>
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</body>
</html>
7. Mengirim Email
Sekarang coba jalankan project codeignitr Anda dengan mengakses url: http://localhost/codeignitermail/index.php/kirimemail
Isikan data seperti gambar di atas kemudian klik tombol Kirim email.
Maka email akan dikirim ke alamat email yang Anda inputkan seperti gambar di bawah ini:
Sekian tutorial Membuat Fitur Kirim Email pada CodeIgniter, artikel ini adalah sebagai dokumentasi pribadi saya sehingga bahasa dan penulisannya dibuat singkat.
Semoga bisa bermanfaat untuk Anda.
Kak, ini program kita harus di hosting dlu, atau bisa offline?