Merhaba arkadaşlar bugün “Python ile mail nasıl atılır?” sorusunu cevaplayacağız. smtplib modülü sıradan bir mail atmak için yeterlidir. Ancak biz atacağımız iletiye dosya da eklemek istersek diğer modüllerin altında bulunan sınıfları da kodumuza eklemeliyiz.
import smtplib, os
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
from email import encoders
Şimdi mail hesabımızı ve şifremizi tutacak değişkenleri belirleyelim.
username = "[email protected]" #gmail hesabınız
password = "password" #gmail hesabınızın şifresi
Gmail’in server’ına 587 numaralı porttan bağlanacağız. 587 numaralı port her mail sistemi için farklılık taşır. Daha sonra login metodu ile server’a mail adresimizle giriş yapıyoruz.
global server
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(username, password)
Tanımladığımız send_mail fonksiyonuna çeşitli parametreler yolluyoruz. Bu fonksiyonda yapılan en önemli iş atacağımız mail’e ekleyeceğimiz dosyaların eklenmesi. Dosya ekleme kısmı for bloğu içerisinde gerçekleşiyor.
def send_mail( send_from, send_to, subject, text, files, isTls=True):
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = "".join(send_to)
msg['Date'] = formatdate(localtime = True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )
for f in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(f,"rb").read() )
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="{0}"'.format(os.path.basename(f)))
msg.attach(part)
server.sendmail(send_from, send_to, msg.as_string())
Şimdi mail’in kime yollanacağını, mail’in konusunu, içeriğini ve mail’in kimden yollandığını göstermek istiyorsak onu belirliyoruz.
send_to= "" #mail'i göndereceğiniz mail adresi
subject = "" #konu
text = "" #içerik
send_from = "isim soyisim" #kimden gönderildiği
Bu satırda maile hangi dosyaların ekleneceğini belirtiyoruz. Bir sonraki satırda ise yazdığımız fonksiyonu çağırıyoruz.
files = ["file1", "file2"] #mail'le beraber yollamak istediğiniz dosyalar
send_mail(send_from, send_to, subject, text, files, isTls = True)
Son satırla server’dan çıkıyoruz.
server.quit()
Yorum Yap