Cara 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 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*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 applicationCodeigniter kita. Susunan foldernya adalah seperti gambar berikut:
folder-email
Setelah 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 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?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:
1
2
3
4
5
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 menuAction > 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 pengecekanevery 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
Share To:

EDISON MEDIA

Post A Comment:

0 comments so far,add yours