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 googlenin 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.
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.
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.
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.
5) Cihaz seçin yazan kısmı "diğer" olarak işaretledikten sonra istediğimiz ismi yazıyoruz ve "Oluştur" diyoruz.
6) Sonuç olarak şifremiz oluşturuluyor. bu kodu kaybetmeyin, bir kenara not edin.
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.
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.
İ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.
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.
Ben konsol üzerinde sonuçları göstermek için try/except blokları arasına aldım. Kodun son hali..
Sonuç;
Kontrol edelim;
Görüldüğü gibi sıkıntısız bir şekilde e-posta gönderildi.
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 googlenin 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.
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.
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.
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.
5) Cihaz seçin yazan kısmı "diğer" olarak işaretledikten sonra istediğimiz ismi yazıyoruz ve "Oluştur" diyoruz.
6) Sonuç olarak şifremiz oluşturuluyor. bu kodu kaybetmeyin, bir kenara not edin.
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.
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.
İ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.
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.
Ben konsol üzerinde sonuçları göstermek için try/except blokları arasına aldım. Kodun son hali..
Sonuç;
Kontrol edelim;
Görüldüğü gibi sıkıntısız bir şekilde e-posta gönderildi.