December 23, 2016 thumb Mengirim Email Massal dalam Jumlah Ribuan dengan PHPMailer

nah, trik ini adalah kelanjutan dari tutorial sebelumnya tentang cara mengirimkan email secara massal. Mengirim Email Massal dengan PHPMail. kalau pada tutorial yang lalu saya membahas tentang bagaimana mengirimkan email dalam jumah banyak, puluhan misalnya. atau diatas seratus, trik yang saya utarakan dalam tutorial kemarin menjadi cocok. tetapi bagaimana untuk mengirimkan emial dalam jumlah ribuan, atau bahkan mungkin puluh ribuan, ratus ribuan atau mungkin jutaan. well big data memang sebuah masalah yang harus diselesaikan dengan cara yang berbeda. yang kadang bahkan melanggar normal chomsky.

cara untuk menangani big data adalah dengan membaginya mejadi beberapa proses kecil yang nantinya akan dikerjakan secara parsial oleh sebuah system atau bisa juga dengan membagi secara parsial yang nantinya akan dikerjakan oleh beberapa system. gambarnya adalah seperti ini. taruhlah ada 10 buku di meja. yang mana buku ini ini akan dipindah oleh petugas dari meja ke gudang penyimpanan. kalau hanya 10 buku tentu petugas cukup angkut semua buku kemudian dia pindahkan ke dalam gudang penyimpanan. dengan cara seperti hal ini tentu bukan masalah jika dikerjakan oleh satu orang. tapi bagaimana jika ada 1000 buku. maka yang harus dikerjakan oleh petugas adalah mengambil 10 buku kemudian memindahkanya  kedalam gudang, hal ini dia ulangi terus sebanyak 100 kali maka dengan sendirinya 1000 buku akan masuk ke gudang. kalau seandainya 1 orang petugas kurang cepat maka bisa ditambah 2 petugas. yang mana masing-masing akan mengambil 10 buku dan memindahkanya ke gudang dalam satu kali proses sehingga ada 50 proses (1000 / ( 2 petugas x 10 buku per angkut)  ).

nah dengan konsep yang sama akan ada sebuah system yang mana akan terus – menerus mengirimkan email berdasarkan alamat email yang ada di database. kita anggap email adalah bukunya, proses pengiriman email adalah proses penyimpanan ke gudang, terakhir petugasnya adalah server tempat kita menempatkan program kita atau dengan kata lain karena kita akan menggunakan Cron Job untuk hal ini. maka petugasnya adalah Proses Cronjob itu sendiri.

sebagaimana petugas tadi, dia akan mengambil setiap 10 buku dan memasukanya ke gudang, tentu saja pada proses berikutnya dia akan mengambil 10 buku lagi yang tersisa (yang belum di pindah ke gudang) untuk kemudian dipindahkan ke gudang. buku yang sudah masuk ke gudang tentu tidak di proses lagi. begitu juga dengan email. untuk alamat email yang sudah dikirimi email tidak perlu di kirimkan ulang.

untuk itu kita membutuhkan apa yang disebut dengan flag atau penanda. bahwa email sudah dikirimkan, yang mana setiap kali selesai melakuakn pengiriman email, akan ditandai bahwasanya alamat email yang ke x sudah dikirim email. sebagai contoh database kemarin, maka kita akan ubah database dengan menambahkan penanda. dalam contoh ini penanda adalah boolean, yang jika bernilai 0 maka belum dikirim dan ketika bernilai 1 berarti sudah dikirim. nah tugas program PHPMailer kita adalah mengirim email pada row yang penandanya bernilai 0, kemudian meng-update penanda row tersebut dengan  angka 1 yang berarti alamat email tersebut telah dikirimi email.

Bentuk Database yang kita inginkan

Bentuk Database yang kita inginkan, cukup dengan menambahkan penanda.

sebenarnya ini adalah modifikasi atau penggabungan antara tulisan saya Mengirim Email Massal dengan PHPMail dan Cara Menggunakan Syntax Crontab Job untuk Otomasi Pekerjaan. dengan menggabungkan kedua hal ini maka akan bisa didapatkan sebuah program pengirim email massal. jadi jika kebetulan belum membaca kedua tulisan saya yang itu, sebaiknya dipahami dulu cara otomasi pekerjaan tersebut.

oke dalam skenario kita kali ini saya akan mengirimkan email bukan setiap 10 alamat email, tetapi setiap 1 email. artinya dalam satu kali proses akan ada pengambilan satu alamat email yang belum dikirimi email, kemudian 1 alamat email yang dipilih tadi akan dikirimi email dan kemudian meng-update penanda dari row di database. berikut ini adalah source code programnya.

/*melakukan koneksi ke MySQL*/
$link = mysqli_connect("localhost", "root", "12345", "goblooge"); 

/*perbedaan dari source code kemarin adalah disini dia cari yang penandanya 0 dan dilimit 1 saja */
$result=mysqli_query($link,"SELECT * FROM keluarga WHERE penanda=0 LIMIT 0,1");

/*loop untuk mengirimakn email*/
while($row=mysqli_fetch_array($result)){
	$mail->addAddress($row["hobi"], $row["nama"]);
	$pesan="Hai ".$row['nama'].", Selamat ".$row['hobi'].", semoga senang dengan hobinya";
	$mail->msgHTML($pesan, "");
	
	if (!$mail->send()) {
		echo "Ada Yang Error Gan: " . $mail->ErrorInfo;
	} else {
		echo "Berhasil di Send!";
	}
	
	/* setiap email yang sudah dicoba untuk dikirim email, maka 
	 * diupdate penandanya menjadi 1 */
	mysqli_query($link,"UDPATE keluarga set penanda=1 WHERE id='".$row['id']."' ");
}

mysqli_close($result);

nah source code ini akan memilih sebuah alamat email yang belum dikirimi, kemudian mengirimakn email kepadanya, dan meng-update penanda bahwa sudah dikirimi email. satu kali proses jalan. silakan dicoba dulu menggunakan browser sebelum kita otomasi di Crontab Job. buka browser dan masuk ke http://localhost/phpmailer/mail_massal_crontab.php, ketika proses sudah selesai cek di database apakah ada email yang penandanya sudah menjadi 1. jika ya, buka lagi http://localhost/phpmailer/mail_massal_crontab.php dan kemudian cek lagi apakah ada alamat email lain selain alamat email yang tadi yang juga ditandai dengan angka 1. jika ya, berarti script sudah siap di otomasi oleh crontab job. adapun cara untuk memasang di crontabjob sangat mudah. buat sebuah file sh yang nantinya akan dipakai untuk memanggil mail_massal_crontab.php, taruhlah namanya mail_massal_crontab.sh, berikut ini adalah isi dari file shell tersebut

cd /var/www/html/phpmail/
echo "RUNNING MASSAL" >> mail.txt
/usr/bin/php /var/www/html/phpmail/mail_massal_crontab.php >> maildaemon.txt

nah tinggal jalankan crontab service dengan mengetikan kode berikut ini, dan menyimpanya dalam file bernama mail_massal_crontab.sh.

jangan lupa tambahkan hal akses execute pada kode tersebut, dengan mengetikan

chmod 777 /var/www/html/phpmail/mail_massal_crontab.sh

kemudian script shell ini kita daftarkan kedalam cron table, agar di eksekusi. caranya seperti tulisan saya sebelumnya dengan mengetikan.

crontab -e

kemdian menambahkan baris kode berikut ini  kedalam cron table.

*/5 * * * * /var/www/html/phpmail/mail_massal_crontab.sh

dengan menambahkan baris tersebut pada cron table, maka setiap 5 menit system akan memanggil mail_massal_crontab.sh dan kemudian mail_massal_crontab.sh akan memanggil mail_massal_crontab.php yang pada akhirnya akan mengirimkan sebuah email. setelah itu kita tinggal tunggu hasilnya, maka setiap 5 menit crontab job akan mengirimakn email ke alamat email tertentu dan dalam waktu tertentu seluruh alamat email akan selesai dikirimi email.

okey sampai disini dulu tulisan saya, untuk source code lengkap dapat di download di Google Drive atau Dropbox, kalau link KO silakan contact saya. sampai jumpa pada tulisan berikutnya, Okey Donkey dan Salam Goblooge.

Comments

total comments