Võimalik, et peate sageli saatma e-kirju paljudele kontodele, kasutades autentimisprogramme ja paljudel muudel eesmärkidel.

SMTP-protokoll määratleb standardid, mis võimaldavad meilisuhtlust meiliserverite ja meiliedastusagentide vahel, samas kui IMAP-protokoll on mõeldud meilide vastuvõtmiseks.

Go pakub funktsioone e-postiga seotud tegevuste jaoks, mille on määratlenud RFC paketis net/smtp, mis sisaldab ka laiendusi 8BITMIME, AUTH ja STARTTLS.

Selles projektis kasutatav kood on saadaval a GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Kuidas saata e-kirju võrgu-/SMTP-paketi abil

Net/smtp pakett on osa Go standardteegist, nii et te ei pea installima ühtegi välist paketti. Enne kasutamist peate paketi importima.

importida (
"net/smtp"
"logi"
"krüpto/tls"
"fmt"
)

Samuti peate importima logi pakett vigade logimiseks konsooli ja crypto/tls pakett turvalise ühenduse konfigureerimiseks.

Kui olete net/smtp paketi importinud, peaksite kirjutama a Kirja saatma() funktsiooni e-kirja saatmiseks ja seejärel põhifunktsiooni funktsiooni kutsumiseks.

instagram viewer
funcpeamine() {
fmt. Prindi (SendMail())
}
funcKirja saatma()string {
// Lisage kood siia
}

The Kirja saatma() funktsioon sisaldaks koodi, mis saadab kirja adressaatidele.

Kuidas meilide saatmine töötab

SMTP-protokoll määratleb parameetrid, mis peavad olema igal kirjal. Need parameetrid on saatja ja saaja meiliaadressid, port, mille kaudu kirjad saadetakse, hostserver ja sõnum.

Ülaltoodud parameetrid on e-kirjade saatmisel olulised.

Sellest õpetusest saate teada, kuidas saata Yahoo e-kirju. Protsess on aga sama mis tahes meiliserveri pakkuja (MSP) puhul, mida te kasutate.

Kuna kasutate Yahoo Maili, logige sisse oma Yahoo Mail konto, minge edasi Konto andmed, ja klõpsake nuppu Konto turvalisus sakk. Seejärel looge rakenduse parool. Peate määrama rakendusele nime ja seejärel loob Yahoo Mail rakendusele parooli ning saate koodis olevat parooli kasutada koos oma meiliaadressiga.

Aastal Kirja saatma() funktsiooni, deklareerite kolm muutujat; muutuja, mis sisaldab teie e-posti stringi, seda, mis sisaldab teie e-posti parooli, ja stringi, mis sisaldab meiliaadressi, millele sõnumeid saadate.

saatja := "[email protected]"
parool := "aSecurePasswordHere"
aadressile := "[email protected]"

Võite kasutada viilu ja silmus läbi elementide kui kavatsete need saata mitmele adressaadile.

Meili hosti ja pordi hankimine ja seadistamine

SMTP-protokoll kasutab meiliallika tuvastamiseks hosti- ja pordinumbreid. See on koht, kus teie MSP tuleb sisse. Peate teadma hosti ja pordi numbrit, mida teie MSP lubab kasutada.

Kontrollige seda ressurssi MSP hostide loendi ja pordi numbrid kui kasutate avalikke e-kirju, nagu Gmail, Yahoo või Outlook. Google on Gmaili jaoks välja lülitanud vähem turvalised rakendused; kui kasutate Gmaili, võite soovida oma rakendust kaitsta.

Kui olete saanud pordi numbri ja hosti aadressi, määrake need muutujatele nagu see:

host := "smtp.mail.yahoo.com"
port := "465"

Ülaltoodud hosti- ja pordinumbrid pärinevad Yahoo Maililt tavakontode jaoks kasutamiseks. Serverit majutatakse aadressil smtp.mail.yahoo.com ja teil on lubatud kasutada porti 465 e-kirjade saatmiseks.

E-kirja sisu deklareerimine

Järgmine samm on meili sisu deklareerimine muutujatena. Teema ja keha moodustavad sõnumi.

teema := "Hei, ma lihtsalt kontrollin sind."
body := "Loodan, et sul läheb hästi! Kuidas sul täna läheb. "

The teema muutuja on meili teema; a keha muutuja on saadetava meili sisu.

Meilipäiste seadistamine

Meili päiste tähistamiseks peate koostama stringide kaardi.

päised := tegema(kaart[string]string)
päised["From"] = alates
headers["To"] = kuni
headers["Teema"] = teema
sõnum := ""
jaoks k, v := ulatus päised {
sõnum += fmt. Sprintf("%s: %s\r", k, v)
}
sõnum += "\r" + keha

Esiteks loote stringivõtmete ja väärtuste kaardi ning määrate oma aadressi, saaja aadressi ja teema päised, nagu ülal näidatud. Vahemiku for-silmus kasutamine päised kaart, a sõnum muutuja on deklareeritud sisaldama päiseid ja sõnumit, kasutades stringi vormingut.

E-posti autentimine

E-kiri vajab allika kinnitamiseks autentimist. Smtp-pakett pakub funktsioone e-posti autentimiseks, kasutades PlainAuth. The PlainAuth meetod võtab parameetritena identiteedi, saatja e-posti, parooli ja hosti ning tagastab Aut objekt, mida kasutate meili saatmiseks.

autentida := smtp. PlainAuth("", from, parool, host)

Identiteet on teie kasutajanimi, mille võib tühjaks jätta, nagu antud juhul näha.

Ühenduse loomine meili jaoks

Mõned meiliteenuse pakkujad nõuavad meili saatmist ühenduse kaudu. Selles artiklis teeme a TCP ühendus serverisse TLS-i konfiguratsioonidega.

tlsConfig := &tls. Config{
InsecureSkipVerify: tõsi,
Serveri nimi: host,
}

Ülaltoodud koodis tegite TLS-i konfiguratsiooni, viidates Konfig ehitage kuhu InsecureSkipVerify oli seatud tõsija serveri nimi määrati peremees muutuv.

Peate looma TCP-ühenduse, kasutades Helista meetod tls pakett. The dial meetod võtab ühenduse tüübi (TCP), antud juhul serveri aadressi ja TLS-ühenduse konfiguratsioonid.


ühendus, err := tls. Dial("tcp", serveri aadress, tlsConfig) err != null {
logi. Paanika (viga)
}

Ülaltoodud koodis lõite TCP-ühenduse ja käsitlesite vigu; olete loonud uue smtp-paketi, kasutades Uusklient meetod net/smtp pakett. The Uusklient meetod võtab vastavalt ühenduse ja hosti.

smtpClient, err := smtp. NewClient (ühendus, host)
kui eks!= null {
logi. Paanika (viga)
}

Nüüd, kui olete loonud smtp kliendi eksemplari, peate määrama parameetrid smtpClient ja käsitleda vigu.

kui err = smtpClient. Auth (autentimine); eks!= null {
logi. Paanika (viga)
}
kui err = smtpClient. Mail (saatja); eks!= null {
logi. Paanika (viga)
}
kui err = smtpClient. Rcpt (päised ["To"]); eks!= null {
logi. Paanika (viga)
}

Ülaltoodud näites edastasite autentimise, saatja aadressi ja saaja aadressi parameetrid nende vastavatele meetoditele ning käsitlesite vigu.

Lõpuks peate kirjutama ühenduse eksemplari ja seda saate teha, luues kirjutaja, kasutades Andmed teie meetod smtp klient näiteks.

kirjutaja, eksitus := smtpClient. Andmed()
kui eks!= null {
logi. Paanika (viga)
}
_, err = kirjanik. Kirjuta ([]bait(sõnum))
kui eks!= null {
logi. Paanika (viga)
}

Pärast kirjutaja loomist kirjutate sõnumist baidilõike, kasutades nuppu Kirjutage meetodit nagu ülaltoodud näites.

eksitus = kirjanik. Sulge()
kui eks!= null {
logi. Paanika (viga)
}
err = smtpClient. Lõpeta ()
kui eks!= null {
tagasi
}
tagasi "Õnnestus, kiri saadetud!"

Sulgege kirjutaja ja sulgege ülaltoodud koodi abil smtp-kliendi ühenduse eksemplar. The Kirja saatma() funktsioon tagastab eduteate, nagu ülal näidatud.

Helistades Kirja saatma() funktsioonis peamine funktsioon, peaksite eduteate oma konsooli logima ja e-kirja adressaadile saatma.

Võrgupaketis on rohkem

Netipakett sisaldab palju võrguga seotud funktsioonide pakette ja smtp pakett on vaid üks neist. Võrgundusega seotud arendamiseks saate kasutada ka TCP- ja HTTP-pakette.

Net/smtp pakett võib teile üle jõu käia, kui te pole taustaarendaja. Meilide kiireks saatmiseks vähemate koodiridadega on palju muid alternatiive. Saate vaadata e-posti turundusettevõtteid, nagu SendGrid, Twilio ja MailChimp, ning uudiskirjateenuseid, nagu Substack ja Revue, mis võimaldavad teil stressivabalt paljudele kasutajatele e-kirju saata.