Saatat joutua usein lähettämään sähköposteja useille tileille käyttämällä todennusohjelmia ja monia muita tarkoituksia.

SMTP-protokolla määrittää standardit, jotka mahdollistavat sähköpostiviestinnän sähköpostipalvelimien ja sähköpostinsiirtoagenttien välillä, kun taas IMAP-protokolla on tarkoitettu sähköpostien vastaanottamiseen.

Go tarjoaa toimintoja sähköpostiin liittyville toiminnoille, jotka RFC määrittelee net/smtp-paketissa, joka sisältää myös 8BITMIME-, AUTH- ja STARTTLS-laajennukset.

Tässä projektissa käytetty koodi on saatavilla a GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.

Sähköpostien lähettäminen Gossa Net/SMTP-paketin avulla

Net/smtp-paketti on osa Go-standardikirjastoa, joten sinun ei tarvitse asentaa mitään ulkoista pakettia. Sinun tarvitsee vain tuoda paketti ennen käyttöä.

tuonti (
"net/smtp"
"Hirsi"
"crypto/tls"
"fmt"
)

Sinun on myös tuotava Hirsi paketti kirjaamaan virheet konsoliin ja krypto/tls paketti turvallisen yhteyden määrittämiseksi.

Kun olet tuonut net/smtp-paketin, kirjoita a

instagram viewer
Lähetä postia() toiminto lähettää sähköpostin ja kutsua sitten toimintoa päätoiminnossa.

funcpää() {
fmt. Tulosta (SendMail())
}
funcLähetä postia()merkkijono {
// Lisää koodi tähän
}

The Lähetä postia() toiminto sisältäisi koodin, joka lähettää viestin vastaanottajille.

Kuinka sähköpostien lähettäminen toimii

SMTP-protokolla määrittää parametrit, jotka jokaisen sähköpostin on oltava. Nämä parametrit ovat lähettäjän ja vastaanottajan sähköpostiosoite, portti, johon sähköposti lähetetään, isäntäpalvelin ja viesti.

Yllä mainitut parametrit ovat tärkeitä sähköpostien lähettämisessä.

Tässä opetusohjelmassa opit lähettämään Yahoo-sähköposteja. Prosessi on kuitenkin sama mille tahansa käyttämällesi Mail Server Providerille (MSP).

Koska käytät Yahoo Mailia, kirjaudu sisään Yahoo sähköposti tili, siirry osoitteeseen Tilitiedot, ja napsauta tilin turvallisuus -välilehti. Luo sitten sovelluksen salasana. Sinun on nimettävä sovellus, jonka jälkeen Yahoo Mail luo sovellukselle salasanan, ja voit käyttää koodissasi olevaa salasanaa sähköpostiosoitteesi kanssa.

Vuonna Lähetä postia() funktiolla, määrität kolme muuttujaa; muuttuja, joka sisältää sähköpostisi merkkijonon, sähköpostisi salasanan ja merkkijonon, joka sisältää sähköpostiosoitteen, johon lähetät viestejä.

lähettäjältä := "[email protected]"
salasana := "aSecurePasswordHere"
osoitteeseen := "[email protected]"

Voit käyttää siivua ja kiertää elementtien läpi jos aiot lähettää ne useille vastaanottajille.

Sähköpostipalvelimen ja portin saaminen ja asettaminen

SMTP-protokolla käyttää isäntä- ja porttinumeroita sähköpostin lähteen tunnistamiseen. Tässä MSP: si tulee esiin. Sinun on tiedettävä isäntä- ja porttinumero, jota MSP: si sallii käyttää.

Tarkista tästä resurssista luettelo MSP-isännistä ja porttien numerot jos käytät julkisia sähköposteja, kuten Gmailia, Yahoota tai Outlookia. Google on poistanut käytöstä vähemmän turvalliset sovellukset Gmailissa. saatat haluta suojata sovelluksesi, jos käytät Gmailia.

Kun olet saanut portin numeron ja isäntäosoitteen, määritä ne muuttujiin seuraavasti:

isäntä := "smtp.mail.yahoo.com"
portti := "465"

Yllä olevat isäntä- ja porttinumerot ovat Yahoo Maililta käytettäväksi tavallisilla tileillä. Palvelin isännöi osoitteessa smtp.mail.yahoo.com, ja sinulla on lupa käyttää porttia 465 sähköpostien lähettämiseen.

Sähköpostin sisällön ilmoittaminen

Seuraava vaihe on ilmoittaa sähköpostin sisältö muuttujiksi. Aihe ja keho muodostavat viestin.

aihe := "Hei, minä vain tarkistan sinua."
body := "Toivottavasti voit hyvin! Mitä sinulle kuuluu tänään. "

The aihe muuttuja on sähköpostin aihe; the kehon muuttuja on lähettämäsi sähköpostin tekstiosa.

Sähköpostin otsikoiden asettaminen

Sinun on tehtävä merkkijonokartta, joka merkitsee sähköpostin otsikot.

otsikot := tehdä(kartta[merkkijono]merkkijono)
headers["From"] = from
headers["To"] = kohteeseen
headers["Aihe"] = aihe
viesti := ""
varten k, v := alue otsikot {
viesti += fmt. Sprintf("%s: %s\r", k, v)
}
viesti += "\r" + body

Luo ensin kartta merkkijonoavaimista ja arvoista ja aseta osoitteesi, vastaanottajan osoitteen ja aiheen otsikot yllä olevan kuvan mukaisesti. Alueen for-silmukan käyttäminen otsikot kartta, a viesti muuttujan on ilmoitettu sisältävän otsikot ja viesti merkkijonomuotoilulla.

Sähköpostin todentaminen

Sähköposti tarvitsee todennuksen lähteen vahvistamiseksi. Smtp-paketti tarjoaa toiminnot sähköpostin todentamiseen käyttämällä PlainAuth. The PlainAuth menetelmä ottaa identiteetin, lähettäjän sähköpostin, salasanan ja isännän parametreiksi ja palauttaa an Tod objekti, jota käytät sähköpostin lähettämiseen.

todennus := smtp. PlainAuth("", lähettäjä, salasana, isäntä)

Identiteetti on käyttäjänimesi, joka voidaan jättää tyhjäksi, kuten tässä tapauksessa näkyy.

Yhteyden luominen sähköpostiin

Jotkut sähköpostipalveluntarjoajat vaativat sähköpostin lähettämistä yhteyden kautta. Tässä artikkelissa teemme a TCP-yhteys palvelimelle TLS-kokoonpanoilla.

tlsConfig := &tls. Config{
InsecureSkipVerify: totta,
Palvelimen nimi: isäntä,
}

Yllä olevassa koodissa teit TLS-määrityksen viittaamalla koodiin Konfig rakenna minne InsecureSkipVerify oli asetettu totta, ja palvelimen nimi määritettiin isäntä muuttuja.

Sinun on luotava TCP-yhteys käyttämällä Soita menetelmä tls paketti. The soittaa menetelmä ottaa yhteystyypin (TCP), tässä tapauksessa palvelimen osoitteen ja TLS-yhteyskonfiguraatiot.


yhteys, err := tls. Dial("tcp", serverAddress, tlsConfig) err != nolla {
Hirsi. Paniikki (err)
}

Yllä olevassa koodissa loit TCP-yhteyden ja käsittelit virheet; olet luonut uuden smtp-paketin käyttämällä Uusi asiakas menetelmä net/smtp paketti. The Uusi asiakas menetelmä ottaa yhteyden ja isännän, vastaavasti.

smtpClient, err := smtp. NewClient (yhteys, isäntä)
jos virhe! = nolla {
Hirsi. Paniikki (err)
}

Nyt kun olet luonut smtp asiakasinstanssi, sinun on asetettava parametrit smtpClient ja käsitellä virheitä.

jos err = smtpClient. Auth (todennus); virhe! = nolla {
Hirsi. Paniikki (err)
}
jos err = smtpClient. Posti (lähettäjä); virhe! = nolla {
Hirsi. Paniikki (err)
}
jos err = smtpClient. Rcpt (otsikot ["To"]); virhe! = nolla {
Hirsi. Paniikki (err)
}

Yllä olevassa esimerkissä välitit todennus-, lähettäjän osoitteen ja vastaanottajan osoitteen parametrit vastaaville menetelmille ja käsittelit virheet.

Lopuksi sinun on kirjoitettava yhteysesiintymään, ja voit tehdä sen luomalla kirjoittajan käyttämällä Data menetelmäsi smtp asiakas ilmentymä.

kirjoittaja, err := smtpClient. Data()
jos virhe! = nolla {
Hirsi. Paniikki (err)
}
_, err = kirjoittaja. Kirjoittaa([]tavu(viesti))
jos virhe! = nolla {
Hirsi. Paniikki (err)
}

Kun olet luonut kirjoittajan, kirjoitat viestin tavuosan käyttämällä Kirjoittaa menetelmällä kuten yllä olevassa esimerkissä.

err = kirjoittaja. Kiinni()
jos virhe! = nolla {
Hirsi. Paniikki (err)
}
err = smtpClient. Lopettaa()
jos virhe! = nolla {
palata
}
palata "Onnistui, posti lähetetty!"

Sulje kirjoittaja ja sulje smtp-asiakasyhteysesiintymä käyttämällä yllä olevaa koodia. The Lähetä postia() funktio palauttaa yllä olevan onnistumisviestin.

Soittaessaan Lähetä postia() toimintoa pää -toimintoa, sinun pitäisi saada onnistumisviesti kirjautumaan konsoliisi ja sähköposti lähetetään vastaanottajallesi.

Verkkopaketissa on muutakin

Verkkopaketti sisältää useita paketteja verkkoon liittyville toiminnoille ja smtp-paketti on vain yksi niistä. Voit myös käyttää TCP- ja HTTP-paketteja verkkoon liittyvään kehitykseen.

Net/smtp-paketti saattaa tuntua ylivoimaiselta, jos et ole taustakehittäjä. On monia muita vaihtoehtoja sähköpostien nopeaan lähettämiseen vähemmällä koodirivellä. Voit tutustua sähköpostimarkkinointiyrityksiin, kuten SendGrid, Twilio ja MailChimp, sekä uutiskirjepalveluihin, kuten Substack ja Revue, joiden avulla voit lähettää sähköposteja monille käyttäjille ilman stressiä.