Можда ћете често морати да шаљете е-пошту на многе налоге користећи програме за аутентификацију и многе друге сврхе.
СМТП протокол дефинише стандарде који омогућавају комуникацију путем е-поште преко сервера поште и агената за пренос поште, док је ИМАП протокол за пријем е-поште.
Го пружа функционалност за активности везане за е-пошту дефинисане РФЦ-ом у нет/смтп пакету, који такође садржи екстензије 8БИТМИМЕ, АУТХ и СТАРТТЛС.
Код који се користи у овом пројекту доступан је у а ГитХуб репозиторијум и бесплатан је за коришћење под МИТ лиценцом.
Како слати е-пошту у Го користећи Нет/СМТП пакет
нет/смтп пакет је део Го стандардне библиотеке, тако да не морате да инсталирате никакав спољни пакет. Потребно је само да увезете пакет пре него што га употребите.
увоз (
"нет/смтп"
"Пријава"
"крипто/тлс"
"фмт"
)
Такође ћете морати да увезете Пријава пакет за евидентирање грешака на конзоли и црипто/тлс пакет за конфигурисање безбедне везе.
Када увезете нет/смтп пакет, требало би да напишете а Пошаљи пошту() функцију за слање поште, а затим позвати функцију у главној функцији.
фунцглавни() {
фмт. Штампај (СендМаил())
}
фунцПошаљи пошту()низ {
// Додајте код овде
}
Тхе Пошаљи пошту() функција би садржала код који шаље пошту примаоцима.
Како функционише слање е-порука
СМТП протокол дефинише параметре које свака пошта треба да има. Ови параметри су адреса поште пошиљаоца и примаоца, порт на који се пошта шаље, хост сервер и порука.
Горе наведени параметри су важни за слање е-поште.
У овом водичу ћете научити да шаљете Иахоо е-поруке. Међутим, процес је исти за било ког добављача маил сервера (МСП) који користите.
Пошто користите Иахоо Маил, пријавите се на свој Иахоо Маил рачун, идите на Информације о налогу, и кликните на Сигурност налога таб. Затим генеришете лозинку за апликацију. Мораћете да дате назив апликацији, а затим ће Иахоо Маил креирати лозинку за апликацију, а ви можете да користите лозинку у свом коду заједно са адресом поште.
У Пошаљи пошту() функција, декларисаћете три променљиве; променљиву која садржи стринг ваше е-поште, ону која садржи вашу лозинку за е-пошту и стринг који садржи адресу е-поште на коју шаљете поруке.
са := "ваша пошта@гмаил.цом"
лозинка := "аСецуреПассвордХере"
на := "анемаил@гмаил.цом"
Можете користити кришку и петља кроз елементе ако намеравате да их пошаљете већем броју прималаца.
Добијање и подешавање хоста и порта е-поште
СМТП протокол користи бројеве хоста и порта да идентификује извор е-поште. Овде долази ваш МСП. Морате знати хост и број порта који вам МСП дозвољава да користите.
Проверите овај ресурс за листу МСП хостова и бројеви портова ако користите јавне имејлове као што су Гмаил, Иахоо или Оутлоок. Гоогле је искључио „мање безбедне апликације“ за Гмаил; можда бисте желели да заштитите своју апликацију ако користите Гмаил.
Када добијете број порта и адресу домаћина, доделите их променљивим попут ове:
хост := "смтп.маил.иахоо.цом"
порт :="465"
Горе наведени бројеви хоста и порта су из Иахоо Маил-а за употребу на редовним налозима. Сервер се налази на смтп.маил.иахоо.цом и дозвољено вам је да користите порт 465 за слање е-поште.
Декларисање садржаја е-поште
Следећи корак је декларисање садржаја поште као променљиве. Предмет и тело чине поруку.
субјецт := "Хеј, само те проверавам."
боди := „Надам се да си добро! Како си данас. "
Тхе предмет променљива је предмет е-поште; тхе тело променљива је тело е-поште коју шаљете.
Подешавање заглавља е-поште
Мораћете да направите мапу низова да бисте означили заглавља е-поште.
заглавља := направити(Мапа[низ]низ)
хеадерс["Од"] = од
хеадерс["То"] = за
хеадерс["Субјецт"] = предмет
порука := ""
за к, в := домет заглавља {
порука += фмт. Спринтф("%с: %с\р", к, в)
}
порука += "\р" + тело
Прво, креирате мапу стринг кључева и вредности и поставите заглавља своје адресе, адресу примаоца и тему, као што је приказано изнад. Коришћење опсега фор-петље на заглавља мапа, а порука променљива је декларисана да садржи заглавља и поруку користећи форматирање стрингова.
Провера аутентичности е-поште
Е-поруци је потребна аутентификација да би се потврдио извор. Смтп пакет пружа функционалност за аутентификацију е-поште помоћу ПлаинАутх. Тхе ПлаинАутх метода узима идентитет, адресу е-поште пошиљаоца, лозинку и хост као параметре и враћа ан Аутх објекат који ћете користити за слање е-поште.
аутхентицате := смтп. ПлаинАутх("", од, лозинка, хост)
Идентитет је ваше корисничко име, које се може оставити празним, као што се види у овом случају.
Креирање везе за е-пошту
Неки провајдери е-поште захтевају да пошаљете е-пошту преко везе. У овом чланку ћемо направити а ТЦП веза на сервер са ТЛС конфигурацијама.
тлсЦонфиг := &тлс. конфигурација{
ИнсецуреСкипВерифи: истинито,
Име сервера: хост,
}
У коду изнад, направили сте ТЛС конфигурацију позивајући се на Цонфиг струцт где ИнсецуреСкипВерифи био постављен на истинито, а име сервера је додељено домаћин променљива.
Морате креирати ТЦП везу користећи Диал методом тлс пакет. Тхе диал метода узима тип везе (ТЦП), у овом случају, адресу сервера и конфигурације ТЛС везе.
веза, грешка := тлс. Диал("тцп", серверАддресс, тлсЦонфиг) ерр != нула {
Пријава. паника (ерр)
}
У коду изнад, направили сте ТЦП везу и обрадили грешке; ви ћете инстанцирати нови смтп пакет користећи НевЦлиент методом нет/смтп пакет. Тхе НевЦлиент метод преузима везу и хост, респективно.
смтпЦлиент, ерр := смтп. Нови клијент (веза, хост)
ако ерр != нула {
Пријава. паника (ерр)
}
Сада када сте креирали смтп инстанце клијента, морате подесити параметре за смтпЦлиент и руковати грешкама.
ако ерр = смтпЦлиент. Аутх (аутентикација); ерр != нула {
Пријава. паника (ерр)
}
ако ерр = смтпЦлиент. Пошта (од); ерр != нула {
Пријава. паника (ерр)
}
ако ерр = смтпЦлиент. Рцпт (хеадерс["То"]); ерр != нула {
Пријава. паника (ерр)
}
У горњем примеру, проследили сте параметре аутентификације, адресе пошиљаоца и адресе примаоца њиховим одговарајућим методама и обрадили грешке.
Коначно, морате писати инстанци везе, а то можете учинити тако што ћете креирати програм за писање користећи Подаци метода вашег смтп клијент инстанце.
писац, грешка := смтпЦлиент. Подаци()
ако ерр != нула {
Пријава. паника (ерр)
}
_, ерр = писац. напиши([]бајт(порука))
ако ерр != нула {
Пријава. паника (ерр)
}
Након креирања писача, пишете део поруке у бајту користећи Пишите метод као у горњем примеру.
ерр = писац. Близу()
ако ерр != нула {
Пријава. паника (ерр)
}
ерр = смтпЦлиент. Одустати()
ако ерр != нула {
повратак
}
повратак „Успешно, пошта је послата!“
Затворите програм за писање и затворите инстанцу смтп клијентске везе користећи горњи код. Тхе Пошаљи пошту() функција враћа поруку о успеху, као што је приказано изнад.
Приликом позивања Пошаљи пошту() функција у главни функцију, требало би да добијете поруку о успеху забележену на вашој конзоли, а е-поруку` послату вашем примаоцу.
Нет пакет има више
Мрежни пакет садржи много пакета за мрежне функционалности, а смтп пакет је само један од њих. Такође можете користити ТЦП и ХТТП пакете за развој везан за умрежавање.
Можда ће вам нет/смтп пакет бити неодољив ако нисте бацкенд програмер. Постоји много других алтернатива за брзо слање е-поште са мање редова кода. Можете погледати компаније за маркетинг е-поште као што су СендГрид, Твилио и МаилЦхимп и услуге билтена као што су Субстацк и Ревуе које вам омогућавају да шаљете е-пошту многим корисницима без стреса.