.:: Posting ke Blog via Email dengan pipe Forwarding ::.
Dikirim oleh : Po3nX, pada 20-02-2010, kategori : Tips & Trick
"Anda mungkin pernah menggunakan fasilitas post via email pada blogger atau wordpress, karena memang blogger atau wordpress sudah ada fasilitas untuk melakukan posting ke blog lewat email.
Lalu bagaimana jika web/blog anda adalah web/blog yang anda bangun dengan coding sendiri? Mungkinkah melakukan posting ke blog anda via email?
Jawabannya adalah sangat mungkin, anda hanya tinggal melakukan email forwarding pada email tertentu, tetapi dalam kasus ini email forwardingnya akan sedikit berbeda, yaitu anda akan melakukan forwarding untuk mentriger sebuah script pada server anda (pipe email to a program).
Bagaimana caranya..? baca informasi selengkapnya..." Sebenarnya ada bermacam cara yang bisa dilakukan untuk melakukan posting ke blog via email, diantaranya adalah;
cara pertama: dengan melakukan eksekusi secara manual dari browser, yaitu setelah anda mengirimkan email berisi posting ke alamat email yang anda tentukan, anda lalu membuka script php yang bertugas untuk melakukan parsing email dan melakukan posting ke blog dari browser anda. Sedikit merepotkan karena anda harus setiap saat membuka browser anda dan melakukan eksekusi, setiap anda melakukan posting via email.
cara kedua: dengan menggunakan cron job, yaitu melakukan suatu penjadwalan agar server anda melakukan eksekusi pada setiap periode yang anda tentukan, cara ini lebih efektif dibandingkan dengan cara pertama, tetapi sedikit kurang real time, karena cron job hanya melakukan eksekusi pada setiap periode yang ditentukan, misalkan perjam, mungkin bisa saja anda melakukan setting cron job sesering mungkin, akan tetapi resikonya ini akan sangat memberatkan sistem anda, sehingga kemungkinan web/blog anda akan lebih lambat diakses.
cara ketiga: cara ini adalah cara paling efektif menurut saya, karena script php akan langsung dan hanya akan dieksekusi setiap ada email masuk, yaitu dengan menggunakan fasilitas forwarder pada Cpanel anda, tetapi forwarder disini bukan untuk diforward ke email lain, melainkan diforward untuk melakukan eksekusi file / program tertentu.
Untuk dapat menggunakan fasilitas forwarder dalam hal ini pipe email to a program, tentunya anda harus mempunyai hak akses ke Control Panel pada hosting anda.
Ikuti langkah - langkah berikut ini:
1. Siapkan sebuah script php yang berfungsi untuk melakukan parsing email kemudian menyimpan data - data email tersebut kedalam sebuah file atau kedalam database.
sebagai contoh dibawah ini adalah script yang bisa melakukan parsing email kemudian menyimpannya kedalam sebuah file .txt:
#!/usr/bin/php -q
<?php
$htmlFound=0;
$fd = fopen("php://stdin", "r");
$email = "";
$email .= fread($fd, 1024);
}
$from = "";
$replyto = "";
$subject = "";
$headers = "";
$message = "";
$split = true;
for ($i=0; $i < count($lines); $i++) {
if ($split) {
$headers.= $lines[$i]."n";
if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) {
$subject = $matches[1];
}
if (preg_match("/^From: (.*)/", $lines[$i], $matches)) {
$from = $matches[1];
}
if (preg_match("/^Reply-To: (.*)/", $lines[$i], $matches)) {
$replyto = $matches[1];
}
if (preg_match("/^Content-Type: (.*)/", $lines[$i], $matches)) {
$boundary = substr($matches[1],32);
}
} else {
$message.=$lines[$i]."n";
}
if (trim($lines[$i])=="") {
$split = false;
}
}
if ($boundary!=""){
$mess=$message;
$split = true;
$mess1="";
for ($i=1; $i < count($lines); $i++) {
if ($split) {
$headers.= $lines[$i]."n";
if (preg_match("/^Content-Type: (.*)/", $lines[$i], $matches)) {
$content_type = $matches[1];
}
if (preg_match("/^Content-Transfer-Encoding: (.*)/", $lines[$i], $matches)) {
$content_encoding = $matches[1];
}
} else {
$mess1.=$lines[$i]."n";
}
if (trim($lines[$i])=="") {
$split = false;
}
}
}
if ($content_encoding=="quoted-printable"){
$akhir = 'Content-Type: text/html;';
$jumlah = strpos($mess1, $akhir);
$message = substr($mess1, 0, $jumlah) ;
}else if ($boundary!=""){
$akhir = '--'.$boundary;
$jumlah = strpos($mess1, $akhir);
$message = substr($mess1, 0, $jumlah) ;
}else{
$message = $mess1 ;
}
if ($content_encoding== 'base64'){
}
} else if(strpos($from, "[mailto:")) {
} else if(strpos($from, "[Mailto:")) {
} else if(strpos($from, "[")) {
$from_email = substr($from,$one, $two);
} else if(($from[0]=="[")&&($from[1]=="m") && ($from[2]=="a") && ($from[3]=="i") && ($from[4]=="l") && ($from[5]=="t") && ($from[6]=="o") && ($from[7]==":")) {
$one=strpos($from, "[mailto")+8;
$from_email = substr($from,$one, $two);
} else if(($from[0]=="[") && ($from[1]=="M") && ($from[2]=="a") && ($from[3]=="i") && ($from[4]=="l") && ($from[5]=="t") && ($from[6]=="o") && ($from[7]==":")) {
$one=strpos($from, "[Mailto")+8;
$from_email = substr($from,$one, $two);
} else if($from[0]=="[") {
$from_email = substr($from,$one, $two);
} else if($from[0]=="<") {
$from_email = substr($from,$one, $two);
} else {
}
$time=date("Y-m-d H: i: s");
$mailtext = "From : ".$from."n";
$mailtext .= "Email : ".$from_email."n";
$mailtext .= "Subject : ".$subject."n";
$mailtext .= "Date : ".$time."n";
$mailtext .= "Boundary : ".$boundary."n";
$mailtext .= "Content Encoding : ".$content_encoding."n";
$mailtext .= "Content type : ".$content_type."nnn";
$mailtext .= "Content : ".$message."nnn";
$temp = fopen("email.txt","w");
if (fwrite($temp, $mailtext)) {
}
?>
perhatikan baris pertama source kode diatas,
anda harus menambahkan Hashbang
#!/usr/bin/php -q
agar script php anda bisa dieksekusi langsung dari server (tidak melalui browser).
pada script diatas program akan melakukan parsing terhadap email yang masuk kemudian menyimpan data - data yang sudah diambil kedalam sebuah file yaitu email.txt, anda dapat mengganti script diatas untuk menyimpan data - datanya kedalam database (data posting).
catatan: script diatas hanya dapat melakukan parsing terhadap email yang berupa plain text, untuk dapat melakukan parsing terhadap email yang kompleks (multiple part) anda perlu menambahkan suatu class mime parser, atau email parser lainya. Saya tidak akan membahasnya disini, tetapi anda dapat mencarinya dari paman gugel dengan keyword "php mail mime parser" atau sejenisnya.
2. Simpan script anda kemudian upload ke server/hosting anda.
3. Login ke Control Panel pada hosting anda kemudian klick pada icon Forwarders
4. Klick pada Add Forwarders lalu masukkan alamat email yang akan anda gunakan untuk penerima posting, lalu klick pada advanced option, pada pipe to a program masukkan lokasi dimana anda menempatkan script php anda misalkan public_html/testhand1.php
5. klick pada tombol Add Forwarder
selesai, anda dapat mencoba forwarder anda, yaitu dengan cara mengirimkan email sebagaimana yang anda masukkan kedalam forwarder diatas, jika forwarder anda sukses maka email anda akan disimpan kedalam file email.txt pada web/ blog anda, untuk mengeceknya silahkan buka melalui browser anda misalkan http://po3nx.web.id/email.txt
Selamat mencoba semoga bermanfaat
Terimakasih |