У овој лекцији ћу поделити скрипту коју користим за слање е-поште корисницима апликација које правим и још много тога.
Шта ћемо радити?
Направићемо једноставан Питхон програм који ће урадити следеће:
- Користите датотеку предлошка коју креирамо за дизајн е-поште. Ово ће бити само датотека заснована на тексту са вредностима резерви.
- Преузмите име и е-пошту особе из друге текстуалне датотеке коју направимо.
Ове тачке чине овај програм много ближим стварном коришћењу слања е-поште у вашим апликацијама. Хајде да почнемо.
Датотека за е-пошту
Датотека која садржи е-адресе за кориснике изгледаће овако:
Схубхам схубхам.код @ гмаил.цомОво је само једноставна текстуална датотека која садржи корисничко име и е-маил раздвојене размаком. Више података е-поште стављено је са подацима сваког корисника у нови ред. Назвали смо ову датотеку корисника.ткт.
Коришћење шаблона
Хајде да брзо дефинишемо и предложак који ћемо користити у нашој скрипти за замену вредности:
Поздрав, $ ПЕРСОН_НАМЕ,Ову е-пошту смо послали користећи Питхон смтплиб модул. Кул, тачно?
Нека вам је ведар дан!
Живели
Користили смо низ шаблона $ ПЕРСОН_НАМЕ које ће бити замењено именом особе коју добијамо од корисника.ткт датотеку док шаљете е-пошту.
Добијање корисничких података из датотеке
Први корак за слање е-поште кориснику је утврђивање места на које желимо да пошаљемо е-пошту. Напишимо Питхон функцију која ће прихватити име датотеке и враћа нам корисничка имена и ИД-ове е-поште на које треба послати е-пошту:
деф гет_усерс_дата (име_датотеке):корисничко име = []
усер_емаил = []
са отвореним (име_датотеке, мод = 'р', енцодинг = 'утф-8') као усер_филе:
за усер_инфо у усер_филе:
корисничко име.аппенд (усер_инфо.сплит () [0])
усер_емаил.аппенд (усер_инфо.сплит () [1])
врати корисничко име, корисничка_емаил
Овом функцијом само враћамо корисникова имена и е-адресе које добијамо из датотеке.
Добијање предмета предлошка
Сада можемо рашчланити наш образац и добити објект шаблона из текстуалне датотеке коју смо направили:
деф реад_темплате (име_датотеке):са отвореним (име_датотеке, 'р', енцодинг = 'утф-8') као мсг_темплате:
мсг_темплате_цонтент = мсг_темплате.читати()
врати образац (мсг_темплате_цонтент)
Овим ћемо вратити објект Шаблон који можемо користити за рашчлањивање садржаја датотеке и извршити неопходне замјене за низове шаблона попут корисничког имена.
Како се врши слање е-поште?
Сада када смо спремни са дизајном шаблона и корисничким подацима, морамо да разумемо како се е-пошта заправо шаље кориснику:
- Направите СМТП везу са акредитивима за пријаву за налог пошиљаоца
- Направите вишеделно заглавље са информацијама са пољима Од, До и Предмет
- Направите тело поруке које треба послати
- Пошаљите е-пошту са објектом СМТП везе
Постављање СМТП везе
Хајде да коначно дефинишемо функцију која ће е-пошту послати одређеним корисницима. Ево функције:
деф маин ():усер_наме, усер_емаил = гет_усерс_дата ('усерс.ткт ') # прочитајте детаље о кориснику
мессаге_темплате = реад_темплате ('порука.ткт ')
# подесите СМТП сервер
смтплиб_сервер = смтплиб.СМТП (хост = 'смтп.Гмаил.цом ', порт = 587)
смтплиб_сервер.старттлс ()
смтплиб_сервер.пријава (СЕНД_ФРОМ, ЕМАИЛ_ПВД)
# Узмите сваки детаљ о кориснику и пошаљите е-пошту:
за име, е-маил у зип-у (усер_наме, усер_емаил):
мултипарт_мессаге = МИМЕМултипарт () # креира поруку
# додајте стварно име особе у образац поруке
мсг = предложак_поруке.замена (ПЕРСОН_НАМЕ = име.наслов ())
# Штампа тело поруке због нас
испис (мсг)
# подесите параметре поруке
мултипарт_мессаге ['Фром'] = СЕНД_ФРОМ
мултипарт_мессаге ['То'] = е-пошта
мултипарт_мессаге ['Субјецт'] = "ЛинукХинт е-пошта"
# додај у тело поруке
мултипарт_мессаге.приложити (МИМЕТект (мсг, 'плаин'))
# пошаљите поруку преко раније постављеног сервера.
смтплиб_сервер.сенд_мессаге (мултипарт_мессаге)
дел мултипарт_мессаге
# Прекините СМТП сесију и затворите везу
смтплиб_сервер.одустати()
У горњој функцији пратили смо сваки корак који смо навели у претходном одељку. Конструисали смо СМТП везу и користили је за слање е-поште.
Комплетан програм
У последњем одељку, погледајмо комплетан програм који се може користити за слање е-поште назначеном кориснику:
импорт смтплибиз низа увоза предлошка
из е-маила.мимика.вишеделни увоз МИМЕМултипарт
из е-маила.мимика.увоз текста МИМЕТект
СЕНД_ФРОМ = 'мој-емаил-овде'
ЕМАИЛ_ПВД = 'моја-лозинка-овде'
деф гет_усерс_дата (име_датотеке):
корисничко име = []
усер_емаил = []
са отвореним (име_датотеке, мод = 'р', енцодинг = 'утф-8') као усер_филе:
за усер_инфо у усер_филе:
корисничко име.аппенд (усер_инфо.сплит () [0])
усер_емаил.аппенд (усер_инфо.сплит () [1])
врати корисничко име, корисничка_емаил
деф реад_темплате (име_датотеке):
са отвореним (име_датотеке, 'р', енцодинг = 'утф-8') као мсг_темплате:
мсг_темплате_цонтент = мсг_темплате.читати()
врати образац (мсг_темплате_цонтент)
деф маин ():
усер_наме, усер_емаил = гет_усерс_дата ('усерс.ткт ') # прочитајте детаље о кориснику
мессаге_темплате = реад_темплате ('порука.ткт ')
# подесите СМТП сервер
смтплиб_сервер = смтплиб.СМТП (хост = 'смтп.Гмаил.цом ', порт = 587)
смтплиб_сервер.старттлс ()
смтплиб_сервер.пријава (СЕНД_ФРОМ, ЕМАИЛ_ПВД)
# Узмите сваки детаљ о кориснику и пошаљите е-пошту:
за име, е-маил у зип-у (корисничко име, корисничка_емаил):
мултипарт_мессаге = МИМЕМултипарт () # креира поруку
# додајте стварно име особе у образац поруке
мсг = предложак_поруке.замена (ПЕРСОН_НАМЕ = име.наслов ())
# Штампа тело поруке због нас
испис (мсг)
# подесите параметре поруке
мултипарт_мессаге ['Фром'] = СЕНД_ФРОМ
мултипарт_мессаге ['То'] = е-пошта
мултипарт_мессаге ['Субјецт'] = "ЛинукХинт е-пошта"
# додај у тело поруке
мултипарт_мессаге.приложити (МИМЕТект (мсг, 'плаин'))
# пошаљите поруку преко раније постављеног сервера.
смтплиб_сервер.сенд_мессаге (мултипарт_мессаге)
дел мултипарт_мессаге
# Прекините СМТП сесију и затворите везу
смтплиб_сервер.одустати()
ако је __наме__ == '__главно__':
главни()
Када покренемо овај програм са Гмаил ИД-ом, могли бисте се суочити са проблемом попут овог:
Гмаил СМТП грешка
То је зато што Гмаил не дозвољава да обичне скрипте користе Гмаил АПИ. Због тога ћете можда морати да онемогућите безбедносну пријаву на свом Гмаил налогу. О томе како то учинити за Гмаил прочитајте овде.
Закључак
У овој лекцији смо погледали како можемо да шаљемо е-пошту користећи Питхон смтплиб модул.