Хабарлама алыптастыру

Салынан файлдармен берілген хабарламаларды алыптастыру жиі туындайтын жадай. Келесі мысалда мтінмен жне ендірумен берілген хабарламалар ралады. Класс ретінде хабарламалар туындату шін 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' нсіз келісім бойынша).