Python - IMAP

IMAP, e-postaları indirmeyen bir e-posta alma protokolüdür. Sadece okur ve görüntüler. Bu, düşük bant genişliği durumunda çok kullanışlıdır. Python'un istemci tarafı kitaplığıimaplib imap protokolü üzerinden e-postalara erişmek için kullanılır.

IMAP duruyor Internet Mail Access Protocol. İlk olarak 1986'da önerildi.

Key Points:

  • IMAP, istemci programının sunucudaki e-posta iletisini yerel bilgisayara indirmeden değiştirmesine izin verir.

  • E-posta tutulur ve uzak sunucu tarafından korunur.

  • Postayı okumadan, postayı indirme, silme gibi herhangi bir işlem yapmamızı sağlar.Posta kutuları adı verilen uzak mesaj klasörleri oluşturmamızı, değiştirmemizi ve silmemizi sağlar.

  • IMAP, kullanıcıların e-postalarda arama yapmasını sağlar.

  • Birden çok posta sunucusundaki birden çok posta kutusuna aynı anda erişime izin verir.

IMAP Komutları

Aşağıdaki tabloda bazı IMAP komutları açıklanmaktadır:

SN Komut Açıklama
1 IMAP_LOGIN
Bu komut bağlantıyı açar.
2 CAPABILITY
Bu komut, sunucunun desteklediği yeteneklerin listelenmesini ister.
3 NOOP
Bu komut, bir hareketsizlik süresi boyunca yeni mesajlar veya mesaj durumu güncellemeleri için periyodik bir anket olarak kullanılır.
4 SELECT
Bu komut, mesajlara erişmek için bir posta kutusu seçmenize yardımcı olur.
5 EXAMINE
Posta kutusunda hiçbir değişikliğe izin verilmemesi dışında SELECT komutuyla aynıdır.
6 CREATE
Belirli bir adla posta kutusu oluşturmak için kullanılır.
7 DELETE
Belirli bir ada sahip bir posta kutusunu kalıcı olarak silmek için kullanılır.
8 RENAME
Bir posta kutusunun adını değiştirmek için kullanılır.
9 LOGOUT
Bu komut, sunucuya istemcinin oturumun bittiğini bildirir. Sunucu, OK yanıtından önce BYE etiketsiz yanıt göndermeli ve ardından ağ bağlantısını kapatmalıdır.

Misal

Aşağıdaki örnekte, kullanıcı kimlik bilgileriyle bir gmail sunucusunda oturum açıyoruz. Ardından gelen kutusundaki mesajları görüntülemeyi seçiyoruz. Alınan mesajları tek tek görüntülemek için bir for döngüsü kullanılır ve son olarak bağlantı kapatılır.

import imaplib
import pprint
imap_host = 'imap.gmail.com'
imap_user = '[email protected]'
imap_pass = 'password'
# connect to host using SSL
imap = imaplib.IMAP4_SSL(imap_host)
## login to server
imap.login(imap_user, imap_pass)
imap.select('Inbox')
tmp, data = imap.search(None, 'ALL')
for num in data[0].split():
	tmp, data = imap.fetch(num, '(RFC822)')
	print('Message: {0}\n'.format(num))
	pprint.pprint(data[0][1])
	break
imap.close()

Posta kutusu yapılandırmasına bağlı olarak posta görüntülenir.