Python SMTP ile Mail Gönderme
Python SMTP ile Mail Gönderme
Hepinize merhaba arkadaşlar bu yazımda sizlere çok basit bir şekilde nasıl Python3 ile smtp kullanarak mail gönderebileceğinizi anlatacağım, tabi sadece mail ile mesaj göndermeyi değil buna ek olarak bir de HTML formatında mail göndermekten de bahsedeceğim.
SMTP ile Normal Mail Gönderme
Evet, ilk olarak normal mail nasıl gönderilir buna bir bakalım. Tabi arkadaşlar bu yöntem bazen mail gönderilmemesi veya spama düşmesi ile sonuçlanabiliyor.
Bu yüzden asıl projelerinizde kullanmak üzere bir sonraki adımı kullanmanızı öneririm.
import smtplib class MailManager: def __init__(self) -> None: self.fromMail = "deneme@yandex.com" # Mail göndereceğimiz hesabın e posta adresi self.fromPassword = "" # Mail göndereceğimiz hesabın şifresi self.smtpHost = "smtp.yandex.com" # Mail göndereceğimiz sunucu self.smtpPort = 465 # Mail göndereceğimiz sunucunun smtp portu def SendMail(self, subject, content, toMail): try: email_text = """ From: %s To: %s Subject: %s %s """ % (self.fromMail, toMail, subject, content) mail = smtplib.SMTP(self.smtpHost,self.smtpPort) # smtp sunucusunu belirliyoruz. mail.ehlo() # sunucuyu başlatıyoruz mail.starttls() # ttls yi başlatıyoruz mail.login(self.fromMail, self.fromPassword) # smtp sunucusuna giriş yapıyoruz mail.sendmail(self.fromMail,toMail,email_text) # mesajımızı gönderiyoruz. except Exception as e: print(f"Bir hata meydana geldi\n {e}") # Hata meydana geldiğini söylüyoruz. finally: mail.quit() # sunucu bağlantısını kapatıyoruz quit yerine ".close()" da kullanabilirsiniz. # Nasıl kullanılır mailMan = MailManager() mailMan.SendMail("mail başlığı","mail içeriği", "gidecek mail adresi")
Python da smtp ile mail göndermek bu kadar basit.
SMTP ile HTML Formatında Mail Gönderme
Şimdi de HTML olarak mail nasıl göndeririz buna bakalım. HTML olarak mail atabilmemiz için MIME tipini HTML olarak belirlememiz gerekiyor.
Bunun için de ekstra bir kaç kütüphaneyi daha projemize dahil etmemiz gerekiyor hadi gelin bu kodları inceleyelim.
import smtplib # SMTP kütüphanemiz from email.mime.text import MIMEText # MIME tipi belirlemek için olan kütüphane from email.mime.multipart import MIMEMultipart # Birden fazla tip belirlemek için olan kütüphane class MailManager: def __init__(self) -> None: self.fromMail = "" # Gönderen mail adresi self.fromPassword ="" # Gönderen mail şifresi self.smtpHost = "" # SMTP sunucu adresi self.smtpPort = # SMTP sunucu portu def SendMail(self, subject, content, toMail): try: message = MIMEMultipart("alternative") message["Subject"] = subject # Konu başlığı message["From"] = self.fromMail # Gönderen mail adiresi message["To"] = toMail # Mailin gideceği adres _content = MIMEText(content.encode('utf-8'), _charset='utf-8') # Burada mime tipini belirliyoruz. "MIMEText(html, "html")" şekinde kullanarak html gönderebilirsiniz. message.attach(_content) # Mesajımızı yerleştiriyoruz with smtplib.SMTP_SSL(self.smtpHost, self.smtpPort) as server: # Sunucuya bağlanıyoruz server.login(self.fromMail, self.fromPassword) # Sunucuya giriş yapıyoruz server.sendmail(self.fromMail, toMail, message.as_string()) # Mailimizi gönderiyoruz except Exception as e: print(f"Mail gönderilemedi!\nHata Kodu: {e}\nMail başlığı : {subject} \nMail içeriği : {content} \nAlıcı : {toMail}") # Hata var ise yazdırıyoruz # Nasıl kullanılır mailManager = MailManager() mailManager.SendMail("Mail başlığı", "Mail içeriği", 'gidecek mail adresi')
Evet arkadaşlar kodların yanında her şeyi açıklamaya çalıştım ancak hala merak ettiğiniz bir şey bulunuyor ise bana buradan yorum olarak sorabilirsiniz.
Yorum Gönder