İçeriğe geç

Python 3 UTF-8 SMTP Mail Gönderme

Python 3 ile Gmail SMTP server üzerinden mail göndereceğiz. Bunun için sunucumuzda smtplib, MIMEText modülünü kurmamız gerekmektedir.

Smtplib ile ilgili dokümantasyon için burayı inceleyebilirsiniz. MIMEText modülü için burayı inceleyebilirsiniz.

Modülü projeye dahil ediyorum.

Mail göndereceğim adresi yada adresleri bir liste içine alıyorum. Eğer ki tek adrese mail gönderecekseniz string olarak değişkende tutmanız yeterlidir. Bunun yanında mail başlığını ve içeriğini de bir değişkende tutuyorum.

Daha sonra gmail hesabının kullanıcı adı ve şifresini bir değişkene atıyorum.

Gmail smtp serverine bağlanmak için kullanacağımız host smtp.gmail.com bu host’un port’u ise 587 bu bilgileri SMTP sunucusuna bağlanırken kullanacağız.

Ehlo metodu ile herhangi bir bağlantı problemi olup olmadığı kontrol ediliyor.

Starttls ile TLS  bağlantısı kurulacak tüm bağlantı işlemi şifreli olacak böylelikle bilgiler korunmuş olacak.

Gmail SMTP server’ına giriş yapıyoruz.

  •  Mimetext ile HTML tipli, UTF-8 bir mail içeriği oluşturdum. Böylelikle Türkçe karakterlerde herhangi bir sorun yaşanmayacaktır.
  • mail[‘From’] ile maili gönderen kullanıcının mail adresini yazıyoruz.
  • mail[‘Subject’] ile mailin başlığını belirliyoruz.
  • mail[‘To’] ile mailin kimlere gittiğini belirliyoruz. Burada join metotu ile listede yer alan mailler birleştirildi, eğer ki sadece bir mail adresi kullanılacaksa bu işleme gerek olmayacaktır.
  • Mime’nin ne olduğunu detaylı olarak incelemek için: http://en.wikipedia.org/wiki/MIME

Mail içeriğimizi uygun string formatına çevirmek için as_string metodu kullanılır.

En son olarak mail gönderimi sağlanır.

Mail gönderimi başarıyla sağlanmış olması gerekmektedir. Mail gönderiminde utf-8 karakter sorunu yaşanmaması için Mimetext modülüne ihtiyaç duyuyoruz. Sisteminize bu mail modülünü kurmadan göndereceğiniz mailler de utf-8 karakter problemi yaşayabilirsiniz.

 

Kategori:Yazılım Teknolojileri
  • Ali Taha KOCA

    AttributeError: module ‘smtplib’ has no attribute ‘SMTP’ bu hatayı alıyorum. nasıl düzeltebilirim

    • Script dosyanızın adı “email.py” şeklinde ise, bu ismi değiştirip tekrar deneyebilir misiniz? Python içerisinde varsayılan olarak bir “email” modülü gelmekte. Bu nedenle smtplib kütüphanesi de içeride “email” modülünü import etmek istediğinde belirttiğiniz sorun oluşmakta.

      • Ali Taha KOCA

        çok teşekkürler bir ödev yanacaktı bu yüzden 😊