Smtplib

Pardus-Linux.org | Wiki sitesinden

Git ve: kullan, ara

smtplib, Python'da smtp işlemleri yani e-posta gönderme işlemleri gerçekleştirmek amacıyla kullanılır.

Temel olarak

import smtplib

komutuyla yazılıma dahil edilir.

Konu başlıkları

Sunucuya Bağlanmak - SMTP

Sunucuya bağlanmak için

smtplib.SMTP(sunucuadresi, kapı)

komutu kullanılır. Örn. sunucu adresi Gmail için smtp.gmail.com, kapı(port) ise 25'tir.

Sunucuda Oturum Açmak - login

Eğer yukarıdaki komutu sunucu adlı bir değişkenine atamış olsaydık,

sunucu.login(kullanıcı, parola)

ile hesabımıza giriş yapabilirdik.

E-Posta Göndermek - sendmail

E-Posta göndermek için ise

sunucu.sendmail(kim, kime, gönderilecek)

komutunu kullanırız. Burada kim gönderen kişi, kime gönderilecek kişinin adresi, gönderilecek ise iletimizin içeriğidir.

Gönderilecek İletinin İçeriği

Göndereceğimiz ileti şu satırları taşımalıdır :

 From: gonderen
 To: gonderilen
 Subject: konu

 Buraya da gönderilecek iletiyi yazın.

Kesinlikle From, To ve Subject terimlerini Türkçeleştirmeyin. Onlar sunucunun anlaması için gerekli olan standart terimlerdir. Subject yani konu satırı ile ileti satırı arasında mutlaka boşluk bırakılmalı. Aksi takdirde iletiniz "boş bir ileti" olarak iletilecektir.

Bu içeriği değişkenler yardımıyla yazacak olursak, hazır olarak bulduğum bir betiği paylaşmak isterim :

string.join((
    "From: %s" % kimden,
    "To: %s" % kime,
    "Subject: %s" % konu,
    "",
    ileti), "\r\n")

Anlayacağınız üzere, kimden, kime, konu ve ileti birer değişkendir.

Sunucuya Selam Gönderme - ehlo() ve helo()

E-Posta sisteminde özellikle yeni SMTP sunucularında oturum açabilmek için sunucuya EHLO veya HELO komutlarını göndermemiz gerekir. EHLO ve HELO hakkında bilgi için [1] adresine bakabilirsiniz. Sunucu büyük olasılıkla bunlardan birini destekliyor olacaktır. Bu komutları Python'da göndermek için bir smtplib nesnesi olan ehlo() veya helo() komutlarını kullanırız. Örnek bir selamlama şu şekilde olacaktır :

import smtplib
sunucu = smtplib.SMTP("pop.gmail.com",25)
sunucu.ehlo()

TLS Güvenlikli Oturum Açma - starttls()

TLS destekli sunuculara bağlanmamamız için, sunucuya TLS ile bağlanacağımızı bildirmemiz gerekmektedir. Bu işlem için yine bir smtplib nesnesi olan starttls() komutunu kullanırız. Bu komuttan sonra tekrar ehlo() ve helo() komutlarının kullanılması gerekmektedir. Örneğin bir GMail hesabına bağlanalım :

import smtplib
sunucu = smtplib.SMTP("pop.gmail.com",25)
sunucu.ehlo()
sunucu.starttls()
sunucu.ehlo()
sunucu.login("kullaniciadi@gmail.com","şifre")

Oturum Kapatma - close()

Sunucu ile olan tüm bağımızı kopartmak için close() komutu kullanılır.

sunucu.close()

Bu anlatılanların PyQT ile desteklenmiş canlı örneğini görmek isterseniz, [2] adresine gidebilirsiniz.


[1] http://belgeler.epiramit.com/rfc/rfc2821-s41.html [2] http://forum.pardus-linux.org/viewtopic.php?f=185&t=17017