E-posta yerleşik Python modülü bize kolayca e-posta mesajları oluşturmak sağlar.
Bir e-posta mesajı oluşturmak için email.message.EmailMessage sınıfını kullanarak başlayacağız.
>>> from email.message import EmailMessage
>>> message = EmailMessage()
>>> sender = "[email protected]"
>>> recipient = "[email protected]"
>>> message['From'] = sender
>>> message['To'] = recipient
>>> message['Subject'] = 'Greetings from {} to {}!'.format(sender, recipient)
>>> print(message)
Mesaj nesnesini yazdırmak bize o nesnenin dize temsilini verir
Çıktı:
From: [email protected]
To: [email protected]
Subject: Greetings from [email protected] to [email protected]!
Kimden , Kime ve Konu , e-posta başlığı alanlarına örnektir . Onlar konum anahtar-değer çiftleri yönlendirmek için e-posta istemcileri ve sunucuları tarafından kullanılan etiket ve talimatların ve e-posta görüntüler. Mesajın ana içeriği olan e-postanın mesaj gövdesinden ayrıdırlar.
Maile Bir gövde eklemek:
>>> body = """Hey there!. I'm learning to send emails using Python!"""
>>> message.set_content(body)
>>> print(message)
Çıktı :
From: [email protected]
To: [email protected]
Subject: Greetings from [email protected] to [email protected]!
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Hey there! I'm learning to send email using Python!
Bir ek eklemek:
E-posta mesajları tamamen dizelerden oluşur. Bir e-postaya ek eklediğinizde, ekin türü ne olursa olsun, bir tür metin olarak kodlanır. Çok Amaçlı Internet Posta Uzantıları (MIME) standart e-posta yoluyla gönderilebilir metin dizeleri olarak dosyaların her türlü kodlamak için kullanılır.
İletinizin alıcısının bir ekle ne yapacağını anlaması için, eki bir MIME türü ve alt türle etiketleyerek onlara ne tür bir dosya gönderdiğinizi söylememiz gerekir. Internet Assigned Numbers Authority (IANA) ( iana.org ) barındıran geçerli bir MIME türlerinin bir kayıt . Göndereceğiniz dosyaların doğru türünü ve alt türünü biliyorsanız, bu değerleri doğrudan kullanabilirsiniz. Bilmiyorsanız, iyi bir tahmin yapmak için Python mimeypes modülünü kullanabilirsiniz.
>>> attachment_path = "/tmp/image.png"
>>> attachment_filename = os.path.basename(attachment_path)
>>> import mimetypes
>>> mime_type, _ = mimetypes.guess_type(attachment_path)
>>> print(mime_type)
image/png
mime_type dizesi, eğik çizgiyle ayrılmış MIME türünü ve alt türünü içerir. EmailMessage tipi ayrı dizeleri olarak bir MIME türü ve alt türlerini ihtiyacı vardır.
>>> mime_type, mime_subtype = mime_type.split('/', 1)
>>> print(mime_type)
image
>>> print(mime_subtype)
png
Şimdi eki postaya ekleyin ve yazdırın.
>>> with open(attachment_path, 'rb') as ap:
... message.add_attachment(ap.read(), maintype=mime_type, subtype=mime_subtype,
... filename=os.path.basename(attachment_path))
...
>>> print(message)
Çıktı :
Content-Type: multipart/mixed; boundary="===============5350123048127315795=="
--===============5350123048127315795==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Hey there! I'm learning to send email using Python!
--===============5350123048127315795==
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="image.png"
MIME-Version: 1.0
iVBORw0KGgoAAAANSUhEUgAAASIAAABSCAYAAADw69nDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAg
AElEQVR4nO2dd3wUZf7HP8/M9k2nKIJA4BCUNJKgNJWIBUUgEggCiSgeVhA8jzv05Gc5z4KHiqin
eBZIIBDKIXggKIeCRCAhjQAqx4UiCARSt83uzDy/PzazTDZbwy4BnHde+9qZydNn97Pf5/uUIZRS
(... few lines deleted ...)
wgAAAABJRU5ErkJggg==
--===============5350123048127315795==--
Eklediğimiz resim de dahil olmak üzere tüm mesaj bir metin dizesi olarak serileştirilebilir. E-posta iletisi bir bütün olarak MIME türü "çok parçalı / karışık" a sahiptir. Mesajın her bölümünün kendi MIME türü vardır. Mesaj gövdesi hala bir "metin / düz" kısım olarak oradadır ve resim eki bir "resim / png" kısmıdır.
Maili Göndermek :
E-posta göndermek için bilgisayarlarımız Basit Posta Aktarım Protokolünü (SMTP) kullanır . Bu protokol, bilgisayarların birbirlerine nasıl e-posta gönderebileceğini belirtir. Bunu doğru bir şekilde yapmak için izlenmesi gereken belirli adımlar vardır. Ancak bunu manuel olarak yapmayacağız. Mesajı yerleşik smtplib Python modülünü kullanarak göndereceğiz .
>>> import smtplib
>>> mail_server = smtplib.SMTP_SSL('smtp.example.com')
>>> sender = "[email protected]"
>>> password = "**********"
>>> mail_server.login(sender, password)
>>> mail_server.send_message(message)
>>> mail_server.quit()