Pada tulisan terdahulu, kita sudah lihat bagaimana cara melakukan koneksi IMAP ke gmail menggunakan PHP. Kali ini kita akan melihat bagaimana cara menampilkan daftar folder / label yang ada di GMail.
Melakukan query
Dengan asumsi koneksi sudah tersedia di variable $mailbox
, maka untuk menampilkan daftar folder, kita bisa menggunakan fungsi imap_list()
:
$folders = imap_list($mailbox, '{imap.gmail.com:993/imap/ssl}', '*' );
Parameter kedua sama dengan imap host yang digunakan untuk membuka koneksi. Sedangkan parameter ketiga adalah kriteria pencarian. Berikut, beberapa kriteria pencarian yang valid:
- /[Gmail]/%: Menampilkan seluruh sub folder /[Gmail]/
- %string%: Menampilkan HANYA folder utama yang cocok dengan kriteria string
- *string*: Menampilkan SEMUA folder dan sub folder yang cocok dengan kriteria string
Beberapa catatan tambahan mengenai folder / label di GMail adalah, tidak semua label yang ada bisa di query. Hanya label-label yang boleh muncul yang bisa di query. Setting untuk ini terdapat di halaman “Settings » Labels“. Di sana akan ada satu opsi tambahan yang namanya “Show in IMAP” pada setiap label. Tapi, opsi ini baru akan muncul bisa kita menggunakan “Labs Feature” yang bernama “Advanced IMAP Controls“.
Menampilkan data
Untuk menampilkan data, anda hanya perlu melakukan looping foreach dari array hasil query:
if( is_array($folders) ) { foreach( $folders as $folder) { echo "$folder\r\n"; } }
Selesai sudah. Cukup simpel kan?
Berikut kode lengkapnya:
<?php $email = '[email protected]'; $password = 'password anda'; $imap_host = "{imap.gmail.com:993/imap/ssl}"; $imap_folder = "INBOX"; //juga bisa disebut sebagai label $mailbox = imap_open($imap_host . $imap_folder,$email,$password) or die('Gagal membuka koneksi ke GMail: ' . imap_last_error()); $folders = imap_list($mailbox, '{imap.gmail.com:993/imap/ssl}', '*a*' ); if( is_array($folders) ) { foreach( $folders as $folder) { echo "$folder\r\n"; } } ?>
Pingback: Mencari Email Melalui IMAP+PHP « Freelancer's Playground!()