Cara menggunakan phpmailer codeigniter 3

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.


Cara menggunakan phpmailer codeigniter 3


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.


Cara menggunakan phpmailer codeigniter 3


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.


Cara menggunakan phpmailer codeigniter 3


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 :


Cara menggunakan phpmailer codeigniter 3


Tenang, saya sudah siapkan foldernya beserta file – filenya. Kalian hanya perlu tempel saja.


  • Download Assets disini

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


Cara menggunakan phpmailer codeigniter 3


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 :


Cara menggunakan phpmailer codeigniter 3


3. Buatlah sebuah file class baru pada /application/libraries dengan nama PHPMailer_load.php. Kemudian isi dengan kode sebagai berikut :


<?php

defined('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 files

        require_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 :


<?php

defined('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 tanggal

        redirect('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 = '[email protected]';

        $mail->Password = 'passwordKamu';

        $mail->SMTPSecure = 'tls';

        $mail->Port = 587;

        $mail->setFrom('[email protected]', '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 HTML

 

 

        if (!$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 : 


<?php

defined('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. 


Cara menggunakan phpmailer codeigniter 3

Email berhasil terkirim,



Cara menggunakan phpmailer codeigniter 3


Download Source Code

Funtechsy.com juga sudah menyiapkan source codenya secara langsung, bagi kalian yang ingin cara instan.


Download source code disini gan!


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.