Хабарлама алыптастыру
Салынан файлдармен берілген хабарламаларды алыптастыру жиі туындайтын жадай. Келесі мысалда мтінмен жне ендірумен берілген хабарламалар ралады. Класс ретінде хабарламалар туындату шін email.Message модульіндегі Message-ді ана олданбай-а, сонымен атар email.MIMEMultipart-дегі MIMEMultipart (бірнеше бліктердегі хабарламалар шін), MIMEImage (графикалы суреттердегі хабарламалар шін), MIMEAudio (аудиофайлдар шін), MIMEText (мтіндік бліктер шін) олдану:
# Модульдегі керекті модульдер жне функциялар жктелуде
from email.Header import make_header as mkh
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email.Encoders import encode_base64
# Басты хабарлама рылуда жне кейбір рістер берілуде
msg = MIMEMultipart()
msg["Subject"] = mkh([("Привет", "koi8-r")])
msg["From"] = mkh([("Друг", "koi8-r"), ("<friend@mail.ru>", "us-ascii")])
msg["To"] = mkh([("Друг2", "koi8-r"), ("<friend2@yandex.ru>", "us-ascii")])
# Егер почталы бадарлама MIME олдайтын болса, онда крінбейтіні
msg.preamble = "Multipart message"
msg.epilogue = ""
# Хабарламаны мтіндік блігі
text = u""" Хата мраат файлы оса тіркелген.""".encode("koi8-r")
to_attach = MIMEText(text, _charset="koi8-r")
msg.attach(to_attach)
# Файлдар бекітіледі
fp = open("archive_file.zip", "rb")
to_attach = MIMEBase("application", "octet-stream")
to_attach.set_payload(fp.read())
encode_base64(to_attach)
to_attach.add_header("Content-Disposition", "attachment",
filename="archive_file.zip")
fp.close()
msg.attach(to_attach)
print msg.as_string()
Бл мысалда бірнеше email пакетіні модулі бірден круге болады. email.Header-дегі make_header() функциясы таырыпша шін берілген мазмнын кодтауа ммкіндік береді.
>>> from email.Header import make_header
>>> print make_header([("Друг", "koi8-r"), ("<friend@mail.ru>", "us-ascii")])
=?koi8-r?b?5NLVxw==?= <friend@mail.ru>
>>> print make_header([(u"Друг", ""), ("<friend@mail.ru>", "us-ascii")])
=?utf-8?b?w6TDksOVw4c=?= <friend@mail.ru>
email.Encoders.encode_base64() функциясы оан жіберілген хабарламаа ыпал етеді жне base64 кмегімен денені кодтайды. Баса нсалар: encode_quopri() – quoted printable кодтау, encode_7or8bit() – жеті немесе сегіз битті алдыру. Бл функциялар керекті рістерді осады.
email пакеті MIME-модуліндегі класстар конструктіріні аргументтері:
class MIMEBase(_maintype, _subtype, **_params)
Барлы олданыстаы MIME хабарламаларды класс орлары (Message ішкі классы). Мазмн трі _maintype жне _subtype арылы беріледі.
class MIMENonMultipart()
attach() дісі тыйым салынан (сондытан ол кепілді) MIMEBase шін ішкі класс бір бліктен трады.
class MIMEMultipart([_subtype[, boundary[, _subparts[, _params]]]])
Бірнеше бліктегі MIME – хабарламасы шін базалы болып табылатын MIMEBase шін ішкі класс. Басты тр multipart, ішкі тр _subtype арылы крсетіледі.
class MIMEAudio(_audiodata[, _subtype[, _encoder[, **_params]]])
MIMENonMultipart ішкі классы. Аудио мліметтерден тратын MIME – хабарламасын ру шін олданылады. Басты тр – audio, ішкі тр _subtype арылы крсетіледі. Мліметтер _audiodata параметірімен беріледі.
class MIMEImage(_imagedata[, _subtype[, _encoder[, **_params]]])
MIMENonMultipart ішкі классы. Графикалы суреттегі MIME – хабарлама ру шін олданылады. Басты тр – image, ішкі тр _subtype арылы крсетіледі. Мліметтер _imagedata парамерті арылы беріледі.
class MIMEMessage(_msg[, _subtype])
MIMENonMultipart классы шін MIMENonMultipart ішкі классы басты тр message болатын MIME – обьектісін ру шін олданылады. _msg параметрі денесі ретінде олданылады жне Message классыны данасы немесе оны рпаы болу керек. Ішкі тр _subtype арылы беріледі, 'rfc822' нсіз келісімі бойынша.
class MIMEText(_text[, _subtype[, _charset]])
MIMENonMultipart ішкі классы. Мтіндік трдегі MIME – хабарламасын ру шін олданылады. Басты тр – text, ішкі тр _subtype арылы крсетіледі. Мліметтер _text параметрі арылы беріледі. _charset арылы кодтауды крсетуге болады ('usascii' нсіз келісім бойынша).