Takip et

PHP ve IMAP Kullanarak E-postaları Uzaktan Okuma İşlemi

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.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorumları Göster (1)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version