Hosting firmalarının sağladığı POP3 desteğinin yanı sıra bedava e-posta hizmeti veren servislerde artık POP3 desteği sunuyor. En sevdiğimiz oyuncağımız Python geniş kütüphanesi sayesinde bu konuda da imkanlar sağlıyor. Python"un standart kütüphanesindeki POP3 desteği sayesinde kendi e-posta uygulamalarınızı yazabilrisiniz. Örneğin, sadece başlıkları getiren text tabanlı bir wap sayfası mail okumak için harcadığınız gprs üzretini düşürebilir. Regular Expression"ın gücüyle kendinize ait bir spam filtreleyici de yazabilirsiniz. Ya da bir Email Client neden olmasın? Aşağıdaki küçük uygulamanın ve açıklamaların başlangıç için faydalı olacağını umuyorum. Yazdığınız kodları bizlerle paylaşmayı unutmazsınız umarım
# -*- coding: iso-8859-9 -*-
import getpass, poplib, re
# Pop Ayarlarınız
POPHOST = "mail.turkpython.net"
POPUSER = "webmaster@turkpython.net"
POPPASS = "xxxxxxx"
# Mesaj içeriğinden çekilecek maksimum satır
MAXLINES = 10
# Gerekli başlıklar
rx_headers = re.compile(r"^(From|To|Subject)")
try:
# Mail server"a bağlantı ve kimlik doğrulaması
pop = poplib.POP3(POPHOST)
pop.user(POPUSER)
if not POPPASS:
# Şifre girilmemişse soruyoruz
POPPASS = getpass.getpass("%s@%s için şifre:" % (POPUSER, POPHOST))
# Kimlik doğrulaması(Şifre)
pop.pass_(POPPASS)
# Genel bilgileri alıyoruz (msg_count, box_size)
stat = pop.stat()
# Verileri yazdırıyoruz
print "Merhaba %s@%s" % (POPUSER, POPHOST)
print "Durum: %d mesaj, %d bytes" % stat
bye = 0
count_del = 0
for n in range(stat[0]):
msgnum = n+1
# Başlıkları çekiyoruz
response, lines, bytes = pop.top(msgnum, MAXLINES)
# Mesaj içeriğini ve başlıkları yazdırıyoruz
print "Mesaj %d (%d bytes)" % (msgnum, bytes)
print "-" * 30
print "\n".join(filter(rx_headers.match, lines))
print "-" * 30
# Döngüyle mesajlarızı okuyoruz
while 1:
k = raw_input("(d=sil(delete), s=geç(skip), v=görüntüle(view), q=çıkış(quit))")
if k in "dD":
# Maili sileceğiz
k = raw_input("%d Mesajını silmek istediğinizden emin misiniz ? (y/n)" % msgnum)
if k in "yY":
pop.dele(msgnum)
print "%d Mesajı silinecektir." % msgnum
count_del += 1
break
elif k in "sS":
print "Serverda %d mesaj kaldı." % msgnum
break
elif k in "vV":
print "-" * 30
print "\n".join(lines)
print "-" * 30
elif k in "qQ":
bye = 1
break
# Güle Güle deme vakti geldi çattı
if bye:
print "iyi Günler"
break
# Özet
print "%s@%s Posta Kutusundaki %d Mesaj Siliniyor." % (POPUSER, POPHOST, count_del )
# Operasyonları tamamla ve serverla bağlantıyı kes.
print "POP3 oturumu kapatılıyor."
pop.quit()
except poplib.error_proto, detail:
# Hata topluyoruz
print "POP3 Protocol Error:", detail