Питхон

Слање е-поште у Питхону

Слање е-поште у Питхону
Слање е-поште један је од најчешћих задатака које морам да радим у веб апликацијама и другим пројектима које креирам. Са Питхоном је ово сасвим једноставно и лако учинити. Чак и када треба да користимо неке унапред дефинисане предлошке, Питхон нам помаже да заменимо вредности резервираних места стварним подацима, тако да коначна е-пошта изгледа елегантно и испуњена детаљима, што мог клијента радује.

У овој лекцији ћу поделити скрипту коју користим за слање е-поште корисницима апликација које правим и још много тога.

Шта ћемо радити?

Направићемо једноставан Питхон програм који ће урадити следеће:

Ове тачке чине овај програм много ближим стварном коришћењу слања е-поште у вашим апликацијама. Хајде да почнемо.

Датотека за е-пошту

Датотека која садржи е-адресе за кориснике изгледаће овако:

Схубхам схубхам.код @ гмаил.цом

Ово је само једноставна текстуална датотека која садржи корисничко име и е-маил раздвојене размаком. Више података е-поште стављено је са подацима сваког корисника у нови ред. Назвали смо ову датотеку корисника.ткт.

Коришћење шаблона

Хајде да брзо дефинишемо и предложак који ћемо користити у нашој скрипти за замену вредности:

Поздрав, $ ПЕРСОН_НАМЕ,
Ову е-пошту смо послали користећи Питхон смтплиб модул. Кул, тачно?
Нека вам је ведар дан!
Живели

Користили смо низ шаблона $ ПЕРСОН_НАМЕ које ће бити замењено именом особе коју добијамо од корисника.ткт датотеку док шаљете е-пошту.

Добијање корисничких података из датотеке

Први корак за слање е-поште кориснику је утврђивање места на које желимо да пошаљемо е-пошту. Напишимо Питхон функцију која ће прихватити име датотеке и враћа нам корисничка имена и ИД-ове е-поште на које треба послати е-пошту:

деф гет_усерс_дата (име_датотеке):
корисничко име = []
усер_емаил = []
са отвореним (име_датотеке, мод = 'р', енцодинг = 'утф-8') као усер_филе:
за усер_инфо у усер_филе:
корисничко име.аппенд (усер_инфо.сплит () [0])
усер_емаил.аппенд (усер_инфо.сплит () [1])
врати корисничко име, корисничка_емаил

Овом функцијом само враћамо корисникова имена и е-адресе које добијамо из датотеке.

Добијање предмета предлошка

Сада можемо рашчланити наш образац и добити објект шаблона из текстуалне датотеке коју смо направили:

деф реад_темплате (име_датотеке):
са отвореним (име_датотеке, 'р', енцодинг = 'утф-8') као мсг_темплате:
мсг_темплате_цонтент = мсг_темплате.читати()
врати образац (мсг_темплате_цонтент)

Овим ћемо вратити објект Шаблон који можемо користити за рашчлањивање садржаја датотеке и извршити неопходне замјене за низове шаблона попут корисничког имена.

Како се врши слање е-поште?

Сада када смо спремни са дизајном шаблона и корисничким подацима, морамо да разумемо како се е-пошта заправо шаље кориснику:

Постављање СМТП везе

Хајде да коначно дефинишемо функцију која ће е-пошту послати одређеним корисницима. Ево функције:

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

У горњој функцији пратили смо сваки корак који смо навели у претходном одељку. Конструисали смо СМТП везу и користили је за слање е-поште.

Комплетан програм

У последњем одељку, погледајмо комплетан програм који се може користити за слање е-поште назначеном кориснику:

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

Када покренемо овај програм са Гмаил ИД-ом, могли бисте се суочити са проблемом попут овог:

Гмаил СМТП грешка


То је зато што Гмаил не дозвољава да обичне скрипте користе Гмаил АПИ. Због тога ћете можда морати да онемогућите безбедносну пријаву на свом Гмаил налогу. О томе како то учинити за Гмаил прочитајте овде.

Закључак

У овој лекцији смо погледали како можемо да шаљемо е-пошту користећи Питхон смтплиб модул.

Инсталирајте најновији Долпхин Емулатор за Гамецубе & Вии на Линук
Долпхин Емулатор вам омогућава да играте изабране игре Гамецубе и Вии на Линук Персонал Цомпутерс (ПЦ). Долпхин Емулатор је слободно доступан и емула...
Како се користи ГамеЦонкуерор Цхеат Енгине у Линуку
Чланак покрива водич о коришћењу ГамеЦонкуерор варалице у Линуку. Многи корисници који играју игре на Виндовс-у често користе апликацију „Цхеат Енгине...
Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...