Python SMTPLIB Modülünü Kullanarak E-Posta Göndermek (gmail)

Raphers

Adanmış Üye
31 Ağu 2014
7,286
5
System.Net
Merhaba arkadaşlar
Python üzerinden e-posta gönderme konusunda ciddi sıkıntılar yaşayan arkadaşlarımız var. Internet üzerinde ki kaynakların ise pek işe yaradığı söylenemez zaten. Kaynak oluşturayım istedim. Kullanacağımız modül: smtplib
[FONT=Courier New, Courier, mono]SMTPLIB Nedir?[/FONT]
SMTP (simple mail transfer protocol) protokollerini kullanarak posta sunucuları arasında Python aracılığı ile e-posta gönderimine olanak sağlayan bir modüldür.
Öncelikle örneğimizde googleyi kullanacağımız için "2 adımlı doğrulama kodu" oluşturmamız gerekiyor. Bu google’nin güvenlik yöntemlerinden biridir. Adımları takip ediyoruz.
Not: Gmail kullanmayacak arkadaşların bu adımları takip etmesine gerek yoktur, direk program yazım kısmına geçebilirler.
1) https://accounts.google.com/SmsAuthConfig adresine giriyoruz. Burada "Kurulumu Başlat" butonuna tıklıyoruz.
1kGWjp.png

2) (Eğer daha önce aktif ettiyseniz direk 4. adıma gidin) Gelen ekrana telefon numaranızı giriniz. Bu hesabınızı doğrulayacaktır. Daha sonra telefonunuza gelen güvenlik kodunu giriniz.
7cf9486a-abba-4ded-a105-cc66a3147317.jpg

3) Gelen kodu girdikten sonra size kullandığınız bilgisayarın güvenli olup olmadığını soracak. Siz tercihinize göre devam edin. Daha sonra "Onayla" diyerek doğrulamayı aktif edin.
gA90jR.png

4) Karşımıza 2 adımlı doğrulama sitemi geldi. Şimdi Python ile Mail gönderebilmek için bir uygulama şifresi oluşturacağız. "Uygulamaya Özel Şifreler" dedikten sonra "Uygulamaya Özel Şifreleri Yönet" diyoruz.
95D1v3.png

5) Cihaz seçin yazan kısmı "diğer" olarak işaretledikten sonra istediğimiz ismi yazıyoruz ve "Oluştur" diyoruz.
Qlp313.png



MyaG9Q.png

6) Sonuç olarak şifremiz oluşturuluyor. bu kodu kaybetmeyin, bir kenara not edin.
XoE12R.png

7) "Tamamlandı" deyip çıkıyoruz. Artık programımızı yazma vakti.
[FONT=Courier New, Courier, mono]Program Yazım Süreci[/FONT]
Her modül gibi smtplib modülü de "import smtplib" denerek içeri aktarılır. Daha sonra gönderici ve alıcı taslakları oluşturulur.
b2LXQd.png

Burada gonderici_sifre yazan yer, bizim kullanacağımız hesabın şifresidir. Eğer gmail kullanılıyorsa oluşturduğumuz "2 adımlı doğrulama kodu" buraya yazılacaktır. Eğer normal bir sunucu kullanılıyorsa e-posta şifresi yazılabilir. alicilar değişkeni ise bir listedir. Bu, çoklu alıcı ekleyebileceğimiz anlamına geliyor.
Şimdi yapmamız gereken şey bir taslak oluşturmak. Dananın kuyruğunun koptuğu yer ise burada işte.
aD1Qjz.png

İlk 3 satır önemli, burası giden mail için bilgi kısımları. Bir çok kullanıcı bu kısımları eklemediği için giden mesaj düzensiz olarak gitmekte. ilk satırda ki <> işaretleri arasına kendi e-mail adresimizi, 2. satırda ki işaretlerin arasına da alıcının e mail adresini yazıyoruz. 3. satırda ki Subject ise konuyu belirler. From Person yerine kendi adımızı, To Person yerine ise alıcının adını yazıyoruz.
Burası da tamam ise sunucularımızı başlatalım ve gmail için giriş yapalım.
YlOLM6.png

Eğer gmail sunucularını kullanacak ise tırnak içerisine smtp.gmail.com yazacağız. Bu durumda gmail’ın veri akış portu 587. port olduğu için bunu yazıyoruz. Farklı posta hizmetlerinin portları da farklı (yandex, hotmail, outlook vs). Son olarak mesajımızı gönderiyoruz ve quit diyerek serverı kapatıyoruz.
8bNvka.png

Ben konsol üzerinde sonuçları göstermek için try/except blokları arasına aldım. Kodun son hali..
DRybEO.png

Sonuç;
mzJydR.png

Kontrol edelim;
j2QOLr.png

2kE3yq.png

Görüldüğü gibi sıkıntısız bir şekilde e-posta gönderildi.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.