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