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

СМТП протокол дефинише стандарде који омогућавају комуникацију путем е-поште преко сервера поште и агената за пренос поште, док је ИМАП протокол за пријем е-поште.

Го пружа функционалност за активности везане за е-пошту дефинисане РФЦ-ом у нет/смтп пакету, који такође садржи екстензије 8БИТМИМЕ, АУТХ и СТАРТТЛС.

Код који се користи у овом пројекту доступан је у а ГитХуб репозиторијум и бесплатан је за коришћење под МИТ лиценцом.

Како слати е-пошту у Го користећи Нет/СМТП пакет

нет/смтп пакет је део Го стандардне библиотеке, тако да не морате да инсталирате никакав спољни пакет. Потребно је само да увезете пакет пре него што га употребите.

увоз (
"нет/смтп"
"Пријава"
"крипто/тлс"
"фмт"
)

Такође ћете морати да увезете Пријава пакет за евидентирање грешака на конзоли и црипто/тлс пакет за конфигурисање безбедне везе.

Када увезете нет/смтп пакет, требало би да напишете а Пошаљи пошту() функцију за слање поште, а затим позвати функцију у главној функцији.

instagram viewer
фунцглавни() {
фмт. Штампај (СендМаил())
}
фунцПошаљи пошту()низ {
// Додајте код овде
}

Тхе Пошаљи пошту() функција би садржала код који шаље пошту примаоцима.

Како функционише слање е-порука

СМТП протокол дефинише параметре које свака пошта треба да има. Ови параметри су адреса поште пошиљаоца и примаоца, порт на који се пошта шаље, хост сервер и порука.

Горе наведени параметри су важни за слање е-поште.

У овом водичу ћете научити да шаљете Иахоо е-поруке. Међутим, процес је исти за било ког добављача маил сервера (МСП) који користите.

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

У Пошаљи пошту() функција, декларисаћете три променљиве; променљиву која садржи стринг ваше е-поште, ону која садржи вашу лозинку за е-пошту и стринг који садржи адресу е-поште на коју шаљете поруке.

са := "ваша пошта@гмаил.цом"
лозинка := "аСецуреПассвордХере"
на := "анемаил@гмаил.цом"

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

Добијање и подешавање хоста и порта е-поште

СМТП протокол користи бројеве хоста и порта да идентификује извор е-поште. Овде долази ваш МСП. Морате знати хост и број порта који вам МСП дозвољава да користите.

Проверите овај ресурс за листу МСП хостова и бројеви портова ако користите јавне имејлове као што су Гмаил, Иахоо или Оутлоок. Гоогле је искључио „мање безбедне апликације“ за Гмаил; можда бисте желели да заштитите своју апликацију ако користите Гмаил.

Када добијете број порта и адресу домаћина, доделите их променљивим попут ове:

хост := "смтп.маил.иахоо.цом"
порт :="465"

Горе наведени бројеви хоста и порта су из Иахоо Маил-а за употребу на редовним налозима. Сервер се налази на смтп.маил.иахоо.цом и дозвољено вам је да користите порт 465 за слање е-поште.

Декларисање садржаја е-поште

Следећи корак је декларисање садржаја поште као променљиве. Предмет и тело чине поруку.

субјецт := "Хеј, само те проверавам."
боди := „Надам се да си добро! Како си данас. "

Тхе предмет променљива је предмет е-поште; тхе тело променљива је тело е-поште коју шаљете.

Подешавање заглавља е-поште

Мораћете да направите мапу низова да бисте означили заглавља е-поште.

заглавља := направити(Мапа[низ]низ)
хеадерс["Од"] = од
хеадерс["То"] = за
хеадерс["Субјецт"] = предмет
порука := ""
за к, в := домет заглавља {
порука += фмт. Спринтф("%с: %с\р", к, в)
}
порука += "\р" + тело

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

Провера аутентичности е-поште

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

аутхентицате := смтп. ПлаинАутх("", од, лозинка, хост)

Идентитет је ваше корисничко име, које се може оставити празним, као што се види у овом случају.

Креирање везе за е-пошту

Неки провајдери е-поште захтевају да пошаљете е-пошту преко везе. У овом чланку ћемо направити а ТЦП веза на сервер са ТЛС конфигурацијама.

тлсЦонфиг := &тлс. конфигурација{
ИнсецуреСкипВерифи: истинито,
Име сервера: хост,
}

У коду изнад, направили сте ТЛС конфигурацију позивајући се на Цонфиг струцт где ИнсецуреСкипВерифи био постављен на истинито, а име сервера је додељено домаћин променљива.

Морате креирати ТЦП везу користећи Диал методом тлс пакет. Тхе диал метода узима тип везе (ТЦП), у овом случају, адресу сервера и конфигурације ТЛС везе.


веза, грешка := тлс. Диал("тцп", серверАддресс, тлсЦонфиг) ерр != нула {
Пријава. паника (ерр)
}

У коду изнад, направили сте ТЦП везу и обрадили грешке; ви ћете инстанцирати нови смтп пакет користећи НевЦлиент методом нет/смтп пакет. Тхе НевЦлиент метод преузима везу и хост, респективно.

смтпЦлиент, ерр := смтп. Нови клијент (веза, хост)
ако ерр != нула {
Пријава. паника (ерр)
}

Сада када сте креирали смтп инстанце клијента, морате подесити параметре за смтпЦлиент и руковати грешкама.

ако ерр = смтпЦлиент. Аутх (аутентикација); ерр != нула {
Пријава. паника (ерр)
}
ако ерр = смтпЦлиент. Пошта (од); ерр != нула {
Пријава. паника (ерр)
}
ако ерр = смтпЦлиент. Рцпт (хеадерс["То"]); ерр != нула {
Пријава. паника (ерр)
}

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

Коначно, морате писати инстанци везе, а то можете учинити тако што ћете креирати програм за писање користећи Подаци метода вашег смтп клијент инстанце.

писац, грешка := смтпЦлиент. Подаци()
ако ерр != нула {
Пријава. паника (ерр)
}
_, ерр = писац. напиши([]бајт(порука))
ако ерр != нула {
Пријава. паника (ерр)
}

Након креирања писача, пишете део поруке у бајту користећи Пишите метод као у горњем примеру.

ерр = писац. Близу()
ако ерр != нула {
Пријава. паника (ерр)
}
ерр = смтпЦлиент. Одустати()
ако ерр != нула {
повратак
}
повратак „Успешно, пошта је послата!“

Затворите програм за писање и затворите инстанцу смтп клијентске везе користећи горњи код. Тхе Пошаљи пошту() функција враћа поруку о успеху, као што је приказано изнад.

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

Нет пакет има више

Мрежни пакет садржи много пакета за мрежне функционалности, а смтп пакет је само један од њих. Такође можете користити ТЦП и ХТТП пакете за развој везан за умрежавање.

Можда ће вам нет/смтп пакет бити неодољив ако нисте бацкенд програмер. Постоји много других алтернатива за брзо слање е-поште са мање редова кода. Можете погледати компаније за маркетинг е-поште као што су СендГрид, Твилио и МаилЦхимп и услуге билтена као што су Субстацк и Ревуе које вам омогућавају да шаљете е-пошту многим корисницима без стреса.