Geçtiğimiz günlerde bir projem için PHP yardımıyla uzak bir sunucudan mevcut e-postaları okuma işlemi için bir dizi araştırmalarda bulundum. Üzerinde oldukça yoğun bir şekilde çalıştım. Bu bağlamda Gmail gelen kutusundan filtrelenmiş mailleri okuyarak, veritabanlarındaki tabloları besleyen bir sistem yazdım. (PHP ve IMAP Kullanarak E-postaları Uzaktan Okuma İşlemi)
İşte Gmail’den gelen e-postaları almak için sizler için oluşturduğum basit bir örnek:
NOT: Sistem sadece aşağıdaki maddelerden emin olduğunuzda doğru olarak çalışacaktır.
- Sisteminizdeki PHP sürümü PHP5 veya daha üstü olmalıdır.
- PHP ayarlarınızdan PHP IMAP Uzantısına izin verilmiş olmalıdır.
- IMAP izni, Gmail ayarlarınızda etkinleştirilmiş olmalıdır.
IMAP’ı XAMPP Üzerinde Etkinleştirme
IMAP, Xampp derlemesinde varsayılan olarak etkinleştirilmediğinden “\xampp\php\php.ini” dosyasına gidin ve “;extension = php_imap.dll” araması yapın ve satırdaki noktalı virgülü kaldırarak etkinleştirin. Güncelleme sonra şu şekilde görünmelidir: extension = php_imap.dll
IMAP’ı Linux Üzerinde Etkinleştirme
PHP5 IMAP modülünü şu komutu kullanarak kurabilirsiniz:
apt-get install php5-imap
Bununla birlikte, modül varsayılan olarak etkin değildir, bu nedenle etkinleştirin:
php5enmod imap
Değişiklikleri görmek için Apache’yi yeniden başlatın.
service apache2 restart
IMAP kullanarak Gmail e-postalarınızı okumak için hazırladığım PHP betiği.
set_time_limit(4000);
// Connect to gmail
$imapPath = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'your_email_id@gmail.com';
$password = 'your_gmail_password';
// try to connect
$inbox = imap_open($imapPath,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* ALL - return all messages matching the rest of the criteria
ANSWERED - match messages with the \\ANSWERED flag set
BCC "string" - match messages with "string" in the Bcc: field
BEFORE "date" - match messages with Date: before "date"
BODY "string" - match messages with "string" in the body of the message
CC "string" - match messages with "string" in the Cc: field
DELETED - match deleted messages
FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set
FROM "string" - match messages with "string" in the From: field
KEYWORD "string" - match messages with "string" as a keyword
NEW - match new messages
OLD - match old messages
ON "date" - match messages with Date: matching "date"
RECENT - match messages with the \\RECENT flag set
SEEN - match messages that have been read (the \\SEEN flag is set)
SINCE "date" - match messages with Date: after "date"
SUBJECT "string" - match messages with "string" in the Subject:
TEXT "string" - match messages with text "string"
TO "string" - match messages with "string" in the To:
UNANSWERED - match messages that have not been answered
UNDELETED - match messages that are not deleted
UNFLAGGED - match messages that are not flagged
UNKEYWORD "string" - match messages that do not have the keyword "string"
UNSEEN - match messages which have not been read yet*/
// search and get unseen emails, function will return email ids
$emails = imap_search($inbox,'UNSEEN');
$output = '';
foreach($emails as $mail) {
$headerInfo = imap_headerinfo($inbox,$mail);
$output .= $headerInfo->subject.'<br/>';
$output .= $headerInfo->toaddress.'<br/>';
$output .= $headerInfo->date.'<br/>';
$output .= $headerInfo->fromaddress.'<br/>';
$output .= $headerInfo->reply_toaddress.'<br/>';
$emailStructure = imap_fetchstructure($inbox,$mail);
if(!isset($emailStructure->parts)) {
$output .= imap_body($inbox, $mail, FT_PEEK);
} else {
//
}
echo $output;
$output = '';
}
// colse the connection
imap_expunge($inbox);
imap_close($inbox);
Karşılaştığınız sorunları iletişim bölümünden paylaşabilirsiniz. Huzurlu günler dilerim.



merhaba hocam veriyi çekiorum ama ?UTF-8?yazıyor nasıl düzeltebilirim