Cara Mudah Mengirim Email ke Gmail dengan Codeigniter - Selamat datang di tutorial belajar codeigniter, kali ini kita akan belajar bagaimana cara mengirim email ke gmail dengan Codeigniter. Untuk mengirim email dengan codeingiter, kita memerlukan sebuah third-party library dan juga akses SMTP Gmail . Nah, third-party library yang akan kita gunakan pada tutorial kali ini yaitu PHPMailer. PHPMailer merupakan salah satu plugin yang cukup terkenal untuk mengirim email pada framework PHP. Ya, framework PHP artinya tidak hanya Codeigniter saja. Hampir semua framework PHP dapat menggunakan library / plugin ini.
Untuk mengirim email, kita memerlukan sebuah protokol. Kalau kalian berlatar belakang pendidikan IT, tentu saja kalian sudah pernah pelajari protokol – protokol yang digunakan untuk transmisi e-mail. Salah satunya SMTP. SMTP merupakan sebuah protokol yang digunakan untuk mengirim e-mail yang sebelum dikirim ke server, email ini diatur dulu oleh MTA (Mail Transfer Agent).
Baca Juga : Cara Membuat CRUD Sederhana Codeigniter 3
Sama halnya jika kita ingin mengirim email ke gmail dengan codeigniter, kita memerlukan host SMTP gmail sebagai jalur dari localhost / server kita untuk mengirim email dari aplikasi codeigniter kita.
Yuk, langsung saja ke tutorial cara mengirim email ke gmail dengan codeigniter via SMTP Gmail.
1. Mengatur ‘Akses Aplikasi yang Kurang Aman’ pada google
Sebelum kita dapat mengakses SMTP Gmail lewat aplikasi kita yang berada di localhost / server hosting kalian, langkah pertama yang harus kita lakukan yaitu mengaktifkan izin akses aplikasi yang kurang aman di menu less secure apps pada google. Kalian dapat akses menu tersebut disini.
Tujuan dari mengaktifkan izin akses pada aplikasi yang kurang aman, tentu saja supaya aplikasi kita yang berada di localhost atau semua tempat yang dikategorikan oleh google ‘kurang aman’ dapat mengakses akun google kita.
Selain ‘Akses Aplikasi yang Kurang Aman’ , kalian juga harus menonaktifkan verifikasi 2 langkah / 2 step verification pada akun anda. Hal ini supaya akun google anda dapat digunakan untuk mengakses SMTP gmail yang akan kita gunakan nanti pada library PHPMailer.
2. Persiapan Projek Codeigniter
Setelah mengkonfigurasi fitur – fitur pada langkah pertama, saatnya kita menyiapkan projek codeigniter kita.
Install Codeigniter
Install codeigniter pada direktori web server kalian. Pada tutorial kali ini, berilah nama projek kalian kirim_email.
Menyiapkan Folder Assets
Folder assets akan digunakan sebagai wadah untuk menampung CSS Stylesheets dan Javascript yang akan digunakan pada projek kita. Untuk itu, buatlah sebuah folder baru dengan nama assets. kemudian isi dengan file – file yang dibutuhkan seperti Boostrap, Bootstrap Datepicker dan Jquery.
Pada projek kita kali ini, kita akan menggunakan beberapa assets sebagai berikut :
Tenang, saya sudah siapkan foldernya beserta file – filenya. Kalian hanya perlu tempel saja.
Menyiapkan Library PHPMailer
Seperti yang sudah saya bilang tadi, untuk mengirim email pada codeigniter kita memerlukan sebuah third-party plugin yaitu PHPMailer.
1. Untuk itu, langkah pertama silahkan download PHPMailer pada link github berikut : https://github.com/PHPMailer/PHPMailer
2. Setelah kalian download, ekstrak PHPMailer pada /application/third_party . Pindahkan semua folder yang berada di /src ke bagian depan folder. Hasilnya seperti gambar di bawah :
3. Buatlah sebuah file class baru pada /application/libraries dengan nama PHPMailer_load.php. Kemudian isi dengan kode sebagai berikut :
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');use PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\Exception;class PHPMailer_Load{public function __construct(){log_message('Debug', 'PHPMailer class is loaded.');}public function load(){// Include PHPMailer library filesrequire_once APPPATH.'third_party/PHPMailer/Exception.php';require_once APPPATH.'third_party/PHPMailer/PHPMailer.php';require_once APPPATH.'third_party/PHPMailer/SMTP.php';$mail = new PHPMailer;return $mail;}}
Sampai disini, library PHPMailer sudah siap untuk dipanggil.
Mengatur File Konfigurasi Codeigniter
Pada bagian ini, seperti biasa kita akan mengatur file konfigurasi codeigniter yang berada di /application/config.
Config.php
Yang pertama, kita akan mengatur base_url yang berada di config.php
Atur pada bagian berikut,
$config['base_url'] = 'http://localhost/kirim_email/';
Autoload.php
Kemudian kita akan mengatur autoload.php supaya auto generate helper URL.
Atur pada bagian berikut,
$autoload['helper'] = array('url');
Routes.php
Selanjutnya kita akan atur URL forwarding pada routes.php,
Atur hingga seperti berikut,
$route['default_controller'] = 'C_Index'; //Controller utama pada projek kita$route['404_override'] = '';$route['translate_uri_dashes'] = FALSE;$route['C_Index/(:any)'] = 'C_Index/$1'; //Lebih lengkapnya tentang ini, kalian bisa baca artikel sebelumnya di kompikaleng ya
Membuat Controller, Model, dan View
Setelah selesai mempersiapkan assets, library dan juga file konfigurasi yang akan kita gunakan pada tutorial kali ini. Selanjutnya kita akan masuk pada proses pembuatan controller, model, dan view nih.
Pada tutorial kali ini, konsepnya kita akan mengirim Email dengan informasi yang didapat dari form pada view.
Yuk langsung aja,
Buat file Controller
Buatlah sebuah file baru pada controller kemudian beri nama C_Index.
Setelah itu, isi C_Index dengan kode sebagai berikut :
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');class C_Index extends CI_Controller {function __construct(){parent::__construct();$this->load->model('M_Index'); // Load Model M_Index pada fungsi construct}public function index(){$this->load->view('V_Index'); // Load View V_Index}function kirimEmail(){$nama = $this->input->post('nama'); // Menangkap inputan nama dari form$email = $this->input->post('email'); // Menangkap inputan email dari form$acara = $this->input->post('acara'); // Menangkap inputan acara dari form$alamat = $this->input->post('alamat'); // Menangkap inputan alamat dari form$tanggal = $this->input->post('tanggal'); // Menangkap inputan tanggal dari form$this->sendEmail($nama,$email,$acara,$alamat,$tanggal); //Memanggil fungsi sendEmail dengan parameter nama,email,acara,alamat, dan tanggalredirect('C_Index'); // redirect ke fungsi index contrller C_Index}function sendEmail($nama,$email,$acara,$alamat,$tanggal){$this->load->library('PHPMailer_load'); //Load Library PHPMailer$mail = $this->phpmailer_load->load(); // Mendefinisikan Variabel Mail$mail->isSMTP(); // Mengirim menggunakan protokol SMTP$mail->Host = 'smtp.gmail.com'; // Host dari server SMTP$mail->SMTPAuth = true; // Autentikasi SMTP$mail->Username = 'usernameKamu@gmail.com';$mail->Password = 'passwordKamu';$mail->SMTPSecure = 'tls';$mail->Port = 587;$mail->setFrom('noreply@kompikaleng.com', 'Undangan Acara'); // Sumber email$mail->addAddress($email,'Kompi Kaleng'); // Masukkan alamat email dari variabel $email$mail->Subject = "Undangan Acara '$acara'"; // Subjek Email$mail->msgHtml("<h3>Undangan Acara $acara</h3><hr>Kepada Yth. <br>$nama<br><br>Kami mengundang anda untuk menghadiri acara, dengan detail sebagai berikut: <br><br>Nama Acara : $acara<br>Alamat Venue : $alamat<br>Tanggal : $tanggal<br><br>Anda dapat mengkonfirmasi kehadiran dengan membalas e-mail ini.<br>Terima Kasih"); // Isi email dengan format HTMLif (!$mail->send()) {echo "Mailer Error: " . $mail->ErrorInfo;} else {//echo "Message sent!";} // Kirim email dengan cek kondisi}}
Seperti yang kita dapat liat, kita membuat 2 fungsi tambahan antara lain fungsi kirimEmail() dan sendEmail().
Fungsi kirimEmail() digunakan untuk menangkap data – data yang di-post atau dikirim dari form pada view nantinya.
Sedangkan, fungsi sendEmail() digunakan untuk memuat library PHPMailer sembari mengirim email ke gmail nantinya,
Untuk keterangan – keterangan setiap kode, saya sudah menambahkannya pada komen di scriptnya. Kalian bisa pahami ya. Kalau kurang jelas / paham, kalian bisa tanyakan di kolom komentar.
Buat File View
Setelah membuat controller, saatnya kita membuat view sebagai user interfacenya. Seperti yang sudah saya bilang tadi, pada view kita hanya akan membuat form sederhana.
Buatlah file baru pada /View kemudian beri nama V_Index.
Setelah itu isi V_Index, dengan kode sebagai berikut :
<!DOCTYPE html><html><head><title>Kirim Email KompiKaleng</title><link rel="stylesheet" type="text/css" href="<?php echo base_url('assets/bootstrap/css/bootstrap.min.css'); ?>"><link rel="stylesheet" type="text/css" href="<?php echo base_url('assets/bootstrap/css/bootstrap-datepicker.min.css'); ?>"><script type="text/javascript" src="<?php echo base_url('assets/jquery/jquery-3.3.1.min.js'); ?>"></script><script type="text/javascript" src="<?php echo base_url('assets/bootstrap/js/bootstrap.min.js'); ?>"></script><script type="text/javascript" src="<?php echo base_url('assets/bootstrap/js/bootstrap-datepicker.min.js'); ?>"></script></head><style type="text/css">body{margin: 20px;}</style><body><div class="panel panel-primary"><div class="panel-heading"><b>Kompikaleng Kirim Email Undangan Acara</b></div><div class="panel-body"><form method="post" action="<?php echo base_url('C_Index/kirimEmail'); ?>"><div class="row"><div class="form-group col-md-6"><label for="nama">Nama User</label><input type="text" name="nama" id="nama" class="form-control" placeholder="Masukkan nama user..."></input></div></div><div class="row"><div class="form-group col-md-6"><label for="email">Email User</label><input type="text" name="email" id="email" class="form-control" placeholder="Masukkan email user..."></input></div></div><div class="row"><div class="form-group col-md-6"><label for="acara">Acara</label><input type="text" name="acara" id="acara" class="form-control" placeholder="Masukkan nama acara..."></input></div></div><div class="row"><div class="form-group col-md-6"><label for="alamat">Alamat Acara</label><input type="text" name="alamat" id="alamat" class="form-control" placeholder="Masukkan alamat acara..."></input></div></div><div class="row"><div class="form-group col-md-6"><label for="tanggal_acara">Tanggal Acara</label><div class="input-group date datepicker" data-provide="datepicker" id="tanggal_acara"><input type="text" class="form-control" name="tanggal" placeholder="Masukkan Tanggal Acara..."><div class="input-group-addon"><span class="glyphicon glyphicon-th"></span></div></div></div></div><div class="row"><div class="col-md-6"><button class="btn btn-success" type="submit"> Submit</button></div></div></form></div></div></body></html><script type="text/javascript">$('.datepicker').datepicker({format: 'dd MM yyyy',startDate: '-3d'});</script>
Pada bagian view ini, error yang biasa terjadi yaitu saat load CSS atau Javascriptnya.
Untuk itu, pastikan penempatan CSS dan JS kalian sudah tepat sesuai dengan kode pada bagian header view di atas.
Pada view juga terdapat pengaturan format datepicker yang berada pada script bagian bawah.
Kalau kurang jelas / paham kalian bisa tanyakan di kolom komentar ya 🙂
Buat File Model
Walau sebenarnya pada projek kita kali ini Model tidak digunakan, tidak ada salahnya untuk membuat Model hehe. Siapa tau, kalian ingin mengembangkan projek ini lebih jauh lagi.
Jadi, buatlah file baru pada /Model kemudian beri nama M_Index.php.
Isi dengan script berikut :
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');class M_Index extends CI_Model {}
Ya, emang kosong. Jadi, ga usah heran ya.
Sampai sini, projek kita udah jadi nih temen – temen :). Yuk, kita trial.
Trial Screenshot
Isikan informasi yang akan kita gunakan pada email di form.
Email berhasil terkirim,
Download Source Code
Funtechsy.com juga sudah menyiapkan source codenya secara langsung, bagi kalian yang ingin cara instan.
Kesimpulan
Untuk mengirim email menggunakan codeigniter lewat localhost / server, diperlukan third party plugin untuk memudahkan kita yaitu PHPMailer. Kemudian, untuk mengirim email dari localhost juga diperlukan mengaktifkan ‘Izin akses aplikasi yang kurang aman’ pada akun google untuk mengakses server SMTP Gmail.
Mungkin segitu dulu deh artikel belajar codeigniter kali ini.
Kalau kalian merasa artikel ini bermanfaat, jangan lupa tinggalkan komentar ya.
Terima kasih
Share This :
comment 8 komentar
more_vertMau tanya kenapa ya keluar error Mailer Error: SMTP connect() failed pas ngirim email?
3 November 2020 pukul 17.51coba bagian $mail->IsSMTP(); dikasih komen saja
3 November 2020 pukul 20.59fungsi mail() berhasil tapi nggak masuk di inbox tujuan
1 Maret 2021 pukul 21.28Terima kasih tutorialnya. Saya berhasil kirim email. Bagaimana kalau kirim ke banyak email dan ada attachment nya?
10 September 2021 pukul 22.30Terima kasih
Halo kak sutejo, fungsi kirim email nya bisa ditaruh di dalem perulangan ya
11 Oktober 2021 pukul 18.32kok ndk masuk yaa di email yang dituju?
26 September 2022 pukul 23.09Payouts are issued via financial institution wire, Bitcoin, and/or your personal financial institution card. After you’re inducted into Shazam’s secret group, you’ll have a collection of magical bonus 까모벳 codes at your fingertips. If you don’t have the time or need to stick around for entire thing} of this Shazam Casino evaluate, you’ll recognize our record of stand-out options.
7 November 2022 pukul 02.45sepertinya smtp dari gmail sudah tidak bisa
24 Desember 2022 pukul 05.09