Membuat Pengiriman Email Terjadwal dengan Framework CodeIgniter

Membuat Pengiriman Email Terjadwal dengan Framework CodeIgniter

Email merupakan media komunikasi yang banyak digunakan. Dalam sebuah aplikasi peran email sangatlah penting. Dengan email kita bisa melaporkan update dari suatu aplikasi misalkan…

Email merupakan media komunikasi yang banyak digunakan. Dalam sebuah aplikasi peran email sangatlah penting. Dengan email kita bisa melaporkan update dari suatu aplikasi misalkan saja berupa notifikasi bahwa tagihan sudah terbayar, notifikasi registrasi akun baru dan lain sebagainya. Fitur email seperti ini biasanya akan Anda temukan pada beberapa layanan website yang menggunakan framework ataupun dibangun mulai dari scratch.
Berbicara tentang framework untuk membuat sebuah website, kebanyakan yang ditemukan adalah menggunakan bahasa pemrograman PHP. Misalkan saja FuelPHP, Yii, ataupun CodeIgniter. Dan pada kesempatan kali ini penulis mencoba berbagi tutorial pembuatan sendmail dengan menggunakan PHPMailer dengan CodeIgniter sebagai frameworknya.
Umumnya trigger email dilakukan pada saat kita mengeklik sebuah tombol, biasanya Penulis menyebutnya Direct Mail. Selain itu juga terdapat mode pengiriman email terjadwal melalui sebuah script pada sistem operasi atau Penulis sebut Scheduling Mail. Menurut Penulis, Kelebihan penggunaan scheduling mail adalah pengguna tidak perlu menunggu sampai pengiriman email selesai untuk menjalankan script berikutnya (karena proses mengirim email dilakukan di background)

Pada tutorial kali ini, Anda bisa mengawalinya dengan membuat tabel pada database milik Anda. Penulis memberi nama tabel t_email, hal ini ditujukan untuk menampung seluruh data dari trigger di proses pengiriman mail. Anda bisa membuatnya dengan menggunakan syntax SQL, seperti yang tertera dibawah ini:


/*Table structure for table `t_email` */

 

CREATE TABLE `t_email` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`nama` varchar(30) DEFAULT NULL,

`email` varchar(30) DEFAULT NULL,

`keterangan` text,

`status_mail` enum('wait','send') DEFAULT 'wait',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

 

/*Data for the table `t_email` */

 

insert  into `t_email`(`id`,`nama`,`email`,`keterangan`,`status_mail`) values (1,'arif','emailearif@gmail.com','hallo','wait');

Langkah selanjutnya adalah menyiapkan library PHPMailer, Download library email pada github https://github.com/ivantcholakov/codeigniter-phpmailer. Kita akan mendapatkan file codeigniter-phpmailer-master.zip kemudian extract dan merge pada folder application Codeigniter kita. Susunan foldernya adalah seperti gambar berikut:
folder-emailSetelah library tersebut Anda dapatkan, ubah konfigurasi email.php. Anda bisa menemukan konfigurasinya pada direktori tempat Anda melakukan instalasi CodeIgniter, pada folder application/config/email.php. Pada dasarnya, pengaturan konfigurasi ini dilakukan untuk mengatur preference email. Berikut pengubahannya :


$config['useragent']        = 'PHPMailer';              // Mail engine switcher: 'CodeIgniter' or 'PHPMailer'

$config['protocol']         = 'smtp';                   // 'mail', 'sendmail', or 'smtp'

$config['mailpath']         = '/usr/sbin/sendmail';

$config['smtp_host']        = 'smtp.gmail.com';

$config['smtp_user']        = 'emailearif@gmail.com';

$config['smtp_pass']        = 'kuraterbangkakilima';

$config['smtp_port']        = 465;

$config['smtp_timeout']     = 30;                        // (in seconds)

$config['smtp_crypto']      = 'ssl';                    // '' or 'tls' or 'ssl'

$config['smtp_debug']       = 2;                        // PHPMailer's SMTP debug info level: 0 = off, 1 = commands, 2 = commands and data

$config['wordwrap']         = true;

$config['wrapchars']        = 76;

$config['mailtype']         = 'html';                   // 'text' or 'html'

$config['charset']          = 'utf-8';

$config['validate']         = true;

$config['priority']         = 3;                        // 1, 2, 3, 4, 5

$config['crlf']             = "\n";                     // "\r\n" or "\n" or "\r"

$config['newline']          = "\n";                     // "\r\n" or "\n" or "\r"

$config['bcc_batch_mode']   = false;

$config['bcc_batch_size']   = 200;

Jika Anda telah mengatur bagian tersebut, langkah selanjutnya adalah membuat controller untuk aplikasi pengiriman email. Anda bisa membuatnya pada folder controller, pada tutorial ini Penulis memberi nama kirim_email.php. Berikut kode lengkapnya :


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

&nbsp;

class Kirim_email extends CI_Controller {

&nbsp;

function __construct() {

parent::__construct();

$this->load->model('mkirim_email');

}

&nbsp;

public function send()

{

$this->load->library('email');

$data['cek'] =  $this->mkirim_email->cek();

foreach ($data['cek'] as $value) {

$subject = 'Test Mail Id :'.$value['id'].'';

$message = '<p>ID : '.$value['id'].' dilaporkan</p>

<p>Nama Pemohon : '.$value['nama'].'</p>

<p>Keterangan : '.$value['keterangan'].'</p>

';

$result = $this->email

->from('emailearif@gmail.com')

->to('emailearif@gmail.com')

->subject($subject)

->message($message)

->send();

$data = array(

'status_mail' => 'send',

);

$this->mkirim_email->update($data);

}

exit;

}

}

Salah satu bagian dari MVC adalah model, maka Anda bisa memulai membuat model. Penulis memberikan nama mkirim_email.php pada folder application/model/mkirim_email.php


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

&nbsp;

class Mkirim_email extends CI_Model {

&nbsp;

function cek()

{

$this->db->where('status_mail','wait');

$query = $this->db->get('t_email');

return $query->result_array();

}

&nbsp;

function update($data)

{

$this->db->where('status_mail', 'wait');

$this->db->update('t_email',$data);

}

&nbsp;

}

&nbsp;

/* End of file mkirim_email.php */

/* Location: ./application/models/mkirim_email.php */

Kemudian kita buat file sceduling_mail.bat pada lokasi yang diinginkan misalnya C:\Users\Arif Rachman\Desktop\sceduling_mail.bat dengan isi sebagai berikut:


d:

cd www\htdocs\DukunganTeknis\

php index.php kirim_email send

Kemudian setelah pembuatan sendmail tersebut selesai, kita harus mengkonfigurasi task scheduler pada Windows untuk menjalankan script .bat yang baru saja kita buat. Anda bisa menemukan task scheduller pada Control Panel > System Security > Administrative Tools.

  1. Pada tutorial kali ini Anda bisa memulainya dengan membuat task, caranya pilih menu Action > Create task. Penulis memberi nama task “scedule_mail”. Seperti yang Anda lihat pada gambar dibawah, beberapa kolom harus Anda isi, Jika sudah selesai klik next

schedule11

  1. Langkah selanjutnya adalah membuat trigger untuk task tersebut, dimana tujuan utamanya adalah penggunaan trigger sebagai pemicu task tersebut dijalankan. Caranya Create new Trigger, Anda akan dihadapkan dengan beberapa pilihan seperti tampak pada gambar. Penulis memilih menggunakan daily, maksudnya adalah aplikasi tersebut akan dijalankan setiap hari dengan 1 kali pengulangan saja. Sedangkan Repeat task digunakan untuk melakukan pengecekan pada task yang dijalankan, hal ini opsional saja. Penulis memilih untuk menggunakan pengecekan every 5 minutes.

schedule2

  1. Anda akan menemui tampilan seperti pada gambar jika langkah tersebut Anda lalui dengan benar. Kalaupun masih ada kekurangan Anda bisa saja memulainya dari Awal.

schedule3

  1. Pada tahapan ini Anda haruskan mengatur script yang akan dijalankan, Anda bisa melakukannya lewat Tab Action buat New Action. Setelah itu isikan path direktori dari program/script, dimana kita meletakkan batch script scheduling yang telah kita buat sebelumnya.

schedule4

  1. Maka kini Anda bisa memulai untuk menjalankan Job Schedule yang telah Anda atur sedemikian rupa.

schedule5

Seperti penjelasan di Awal, Setelah semua langkah dilakukan maka setiap 5 menit windows akan menjalankan script sceduling_mail.bat yang menjalankan script untuk mengirim email jika status_mail pada tabel t_email adalah ‘wait’. Penulis mencoba memberikan Hasil email terkirim dari aplikasi ini:

email_notif

Demikian paparan dari saya semoga membantu pembaca dalam pembelajaran terhadap Framework CodeIgniter

 

Referensi :

http://windows.microsoft.com/en-sg/windows/schedule-task#1TC=windows-7

 

Tag: , , , , , , , , , , , ,

7 Comments

Leave Comment
  1. Mas, kalo bikin Form Loginnya doang pake Play Framework bisa ga ?
    Tapi ga pake PHP

  2. Promo spesial bulan suci ramadhan discount 20-50% untuk semua produk,& pembelian di atas 2 unit gratis satu unit samsung galaxy V, buruan stok terbatas
    Tersedia : Blackberry,Samsung,Sony xperia,iPhone,LG,Oppo,Asus,Apple iPad,Camera Nikon/Canon,Laptop,dll
    jika minat silahkan hubungi Pin BB kami : 2A492856
    Promo hanya khusus Berlaku selama bulan suci ramadhan…!!!
    Ayoo Buruuaaannnn Orrdeerrr..!!!

  3. Daffa says:

    Terima Kasih share articlenya :)

    semoga di limpahkan rezeki dan kesehatan buat anda.

    kalau yang session gimana pak?
    itu kan tidak pake session, biar aman

  4. Husen Nugraha says:

    NICE INFO ! :)

  5. Bayu Andika says:

    bagaimana mengirim ke beberapa penerima ?

  6. benny says:

    kalau schedulling mail dari website bgaimana ?
    kalau localhost kan kita bisa panggil scheduller task.
    kalau kita naru filenya di folder/direktori hosting, solusinya bagaimana agar bisa scheduling mail.

    thanks.

Write Comment

Your email will not be published. The marked label is required.