Membuat Pengiriman Email Terjadwal dengan Framework CodeIgniter
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' ); |
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; |
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' ); class Kirim_email extends CI_Controller { function __construct() { parent::__construct(); $this ->load->model( 'mkirim_email' ); } 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 ; } } |
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' ); class Mkirim_email extends CI_Model { function cek() { $this ->db->where( 'status_mail' , 'wait' ); $query = $this ->db->get( 't_email' ); return $query ->result_array(); } function update( $data ) { $this ->db->where( 'status_mail' , 'wait' ); $this ->db->update( 't_email' , $data ); } } /* End of file mkirim_email.php */ /* Location: ./application/models/mkirim_email.php */ |
1
2
3
4
5
| d: cd www\htdocs\DukunganTeknis\ php index.php kirim_email send |
- 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
- 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.
- Anda akan menemui tampilan seperti pada gambar jika langkah tersebut Anda lalui dengan benar. Kalaupun masih ada kekurangan Anda bisa saja memulainya dari Awal.
- 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.
- Maka kini Anda bisa memulai untuk menjalankan Job Schedule yang telah Anda atur sedemikian rupa.
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:
Demikian paparan dari saya semoga membantu pembaca dalam pembelajaran terhadap Framework CodeIgniter
0 komentar:
Posting Komentar