Cron scheduling email newsletter (Automate Email)

Most of the knowledge I got it from him, just check him out.

Keyword : PHP+Mysql, PHPMailer, Crontab, FreeBSD

Overall, langkah-langkahnya sama seperti di blog dia. Mungkin ada beberapa perbedaannya yakni di script sh nya.

File connect.php

        $db_hostname = 'localhost';
	$db_username = 'root';
	$db_password = '';
	$GLOBALS['db_new'] = 'dbName';

	$GLOBALS['conn'] = mysql_connect($db_hostname, $db_username, $db_password);
	mysql_select_db($GLOBALS['db_new'], $GLOBALS['conn'])or die (mysql_error());

        function escape($data) {
		return mysql_real_escape_string((string) $data, $GLOBALS['conn']);
	}

Gue naruh beberapa fungsi prosedur php untuk mysql di sini supaya nanti nggak usah repot-repot memanggil fungsi yang sama.

File email.php

<?php
require_once('/full/path/to/your/php/mailer/phpmailer/class.phpmailer.php');
require_once('/full/path/to/your/connect.php');

$mail = new PHPMailer();
$mail->IsSMTP();
//Set these setting with your server configuration mail server or using gmail host can be done. Just google the phpmailer config for using gmail host
$mail->SMTPAuth = false;
$mail->Port       = 587;                             // set the SMTP server port
$mail->Host       = "smtp.gmail.com";                // SMTP server
$mail->Username   = "personalia@YourDomain.com";     // SMTP server username
$mail->Password   = "YourPassword";

$mail->From="from@mail.com";
$mail->FromName="From Name Your Email";
$mail->Sender="sender@mail"; //useful so that if the email is not sent, it will be returned to this email (like MAILER DAEMON)

// do not forget to add the second parameter that will be shown as bracket name like : youremail@yahoo.com <Mahmoood Abass>
// some server mail host will filter this email as spam if you do not add the second parameter of AddAddress
$mail->AddAddress("someaddress@yahoo.com", "name 1");
$mail->AddAddress("someaddress@gmail.com", "name 2");
$mail->AddAddress("someaddress@ymail.com", "name 3");
$mail->AddAddress("someaddress@hotmail.com", "name 4");

$mail->Subject = "Newsletter Test";
$mail->IsHTML(true);
$mail->Body = "<h1>Test 1 of PHPMailer html</h1><p>This is a test</p>";
$mail->AltBody="This is text only alternative body.";

if(!$mail->Send())
{
   echo "Error sending: " . $mail->ErrorInfo;;
}

?>

Done! Dengan script ini normalnya Anda sudah bisa mengirim email. Selanjutnya adalah bagaimana membuat email ini menjadi otomatis terkirim setiap waktu tertentu. Sekali lagi saya mengingatkan bahwa email otomatis ini dilakukan di lingkungan server FreeBSD, jadi mungkin sedikit berbeda dengan server linux (ubuntu/freeBSD). Hanya sintaksis aja sih.

Buat file di folder yang sama scheduler.sh

root# ee scheduler.sh

Silakan gunakan editor apapun ee, vim, vi, dll. Tapi karena saya suka pakai ee saya gunakan itu saja. Untuk savenya tinggal klik tombol keyboard escape/end. Klik enter pada save & leave. Enter kembali pada opsi save.

File scheduler.sh

#!/bin/sh
/usr/local/bin/php -f /full/path/to/your/email.php

Pada dasarnya php -f email.php saja sudah cukup. Namun nampaknya behaviour FreeBSD mengharuskan full path. Mungkin bisa di setting entah dimana. Yang jelas untuk sementara gunakan full path. Oh iya, jangan lupa #!/bin/sh untuk menjelaskan bahwa script tersebut adalah script bin shell.

Next : Cron Scheduling!

Untuk melihat schedule yang sudah ada bisa menggunakan

root# crontab -l

Untuk mengeditnya, dan kita akan mengeditnya silakan memasukkan command

root# crontab -e

Pada dasarnya crontab -e akan mengedit suatu file entah dimana, dan males nyarinya, jadi sama seperti script bin shell atau config lainnya kita bisa membuat komentar menggunakan #.

File crontab

0 0 */2 * * /full/path/to/your/scheduler.sh

Menggunakan crontab -e sama seperti kita mengedit melalui vi/vim. Untuk mulai mengetik klik di keyboard tombol “insert” atau “i”. Untuk menghapus dapat menggunakan tombol “del”, setelah hapus dan ingin menulis lagi klik kembali tombol “insert” atau “i”. Untuk keluar dan save klik tombol escape, di bawah akan muncul “:” kalau sudah muncul tulis “wq” lalu klik tombol “Enter”. Kalau masih bingung juga silakan google sendiri bagaimana menggunakan editor vi/vim di linux environment.

Konfigurasi di atas memiliki arti bahwa  script scheduler.sh akan dijalankan setiap jam 00:00 setiap dua hari sekali (di setiap hari ganjil) setiap bulannya.

THEN? Then? Then? What to do next? It’s done my bro!! Untuk ngetestnya crontabnya di set 5 menit ke depan aja. Biar kita bisa mengecek apakah dalam 5 menit ke depan emailnya terkirim.

Silakan mencoba.

***

Berikut adalah penjelasan singkat tentang parameter crontab :

* * * * * command

(*) pertama menunjukkan menit dari 0 – 59.

(*) pertama menunjukkan jam dari 0 – 23.

(*) pertama menunjukkan tanggal dari 0 – 30.

(*) pertama menunjukkan bulan dari 0 – 11.

(*) pertama menunjukkan hari dari 0 – 6.

Selain angka murni kita bisa menggunakan koma (,) , strip (-), dan slash (/).

(,) berarti concat. Misal menit 1, 3, 5 artinya setiap menit 1, 3, dan 5

(-) berarti range. Misal menit 1-5 artinya setiap menit 1, 2, 3, 4, dan 5

(/) berarti range. Misal tanggal */2 artinya setiap dua hari sekali

Dapat juga dikombinasikan, misal tanggal 1-5/2 yang memiliki arti setiap dua hari sekali sejak tanggal 2 sampai 6.

Untuk coba-coba bisa pakai cronwtf disini. Di sana bisa langsung simulasi makna dari setiap parameter cron.

2 pemikiran pada “Cron scheduling email newsletter (Automate Email)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s