Python yerleşik e-mail modülü ile ekli e-mail gönderme

Bu yazıda Ptyhon'nun yerleşik E-Mail modülünü kullanarak ek eklenmiş bir mail gönderme nasıl yapılır onu öğreneceğiz.

python - 18-09-2020 17:57

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 = "me@example.com" >>> recipient = "you@example.com" >>> 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: me@example.com To: you@example.com Subject: Greetings from me@example.com to you@example.com!

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: me@example.com To: you@example.com Subject: Greetings from me@example.com to you@example.com! 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 = "from-address@example.com" >>> password = "**********" >>> mail_server.login(sender, password) >>> mail_server.send_message(message) >>> mail_server.quit()
Günün Diğer Haberleri