Smtplib
Pardus-Linux.org | Wiki sitesinden
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
