Mencari Email Melalui IMAP+PHP

Setelah beberapa tulisan mengenai cara akses IMAP Gmail menggunakan PHP, serta cara memperoleh daftar label di Gmail (melalui IMAP juga), tulisan kali ini akan membahas cara mencari email di Gmail. Masih tetap menggunakan IMAP dan PHP kok.

Membuka Koneksi

Tahap pertama yang harus dilakukan, seperti biasa, membuka koneksi ke Gmail. Caranya, seperti juga pada tulisan-tulisan terdahulu, tetap menggunakan imap_open():

$email    = "[email protected]";
$password = "password anda";

$imap_host = "{imap.gmail.com:993/imap/ssl}";
$imap_folder = "appenginejs";

$mailbox = imap_open($imap_host . $imap_folder,$email,$password)
              or die('Gagal membuka koneksi ke GMail: ' . imap_last_error());

Pada kode di atas, yang paling penting untuk dicatat adalah pengunaan variable $imap_folder. Karena, folder / label yang anda isi di sana, menentukan hasil pencarian. Yaitu, bila anda isi, ‘INBOX‘, maka pencarian akan dilakukan di INBOX. Demikian halnya bila pencarian dilakukan di ‘[Gmail]/Starred‘, maka pencarian akan dilakukan di label ‘Starred’.

Melakukan Pencarian

Inti dari pencarian email berada di fungsi imap_search(). imap_search menerima parameter handler mailbox (dalam hal ini, berarti variable $mailbox) dan parameter pencarian yang diinginkan.
Berikut ini beberapa contoh pencarian yang bisa dilakukan:

$emails = imap_search ( $mailbox, 'SUBJECT "serba"' );

Mencari email di mana pada subjectnya terdapat potongan kata ‘serba’

$emails = imap_search ( $mailbox, 'FROM "super"' );

Mencari email di mana pada field FROM terdapat potongan kata ‘super’

$emails = imap_search ( $mailbox, 'UNSEEN' );

Mencari email yang belum dibaca (atau ‘unread mail’ pada istilah gmail)

$emails = imap_search ( $mailbox, 'ON "17-Nov-2010"' );

Mencari email yang diterima pada tanggal 17 November 2010

$emails = imap_search ( $mailbox, 'BODY "lamaran"' );

Mencari email di mana pada isi email tersebut terdapat kata ‘lamaran’

Hasil dari fungsi imap_search() adalah array yang berisi message ID dari email-email yang sesuai dengan parameter pencarian.

Memproses Hasil Pencarian

Setelah dapat daftar email yang dicari, selebihnya kita tinggal memproses sesuai yang diingingkan. Anda bisa:

  • Menampilkan subject email ke layar
  • Mengirim email balasan
  • Menghapus email tersebut
  • Mendownload attachment (bila ada)
  • Dan lain sebagainya

Contohnya, untuk menampilkan subject email:

$total_email = count( $emails );
echo "Got $total_email email" . ( $total_email > 0 ? '(s)' : '') . "\n";

foreach($emails as $emID)
{
	$email_info = imap_fetch_overview($mailbox,$emID,0);
	echo $email_info[0]->subject . "\n";
}

Stay tuned untuk tutorial berikutnya. Karena akan membahas bagaimana cara mendownload attachment email.

Author: Arief Bayu Purwanto

Hello, my name is Arief Bayu Purwanto, a 24 years old father of a beautiful daughter. Interested in online programming, linux, games, and reading. Currently working on kapanlagi.com as junior developer. I live in a relatively quite and cool place called Malang. I'm available for some freelance stuff as well as some consulting job. You can see my portofolio for some previous task I've finished and some other information related to my capability. Btw, I'm plurking here.