İçeriğe atla


POP3 Mailler Üzerinde İşlemler


  • Bu başlığı cevaplayamazsınız
Bu başlığa hiç cevap verilmemiş

#1 Muallim-i Âli

    Genç Üye

  • Yasaklanmış
  • PipPip
  • 347 İleti

Gönderi Tarihi: 25 Kasım 2007 - 17:03


Yazan : TurkPython

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.

# -*- 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