Előfordulhat, hogy gyakran kell e-maileket küldenie számos fióknak hitelesítési és sok egyéb célból programokkal.

Az SMTP protokoll szabványokat határoz meg, amelyek lehetővé teszik az e-mail kommunikációt a levelezőszervereken és a levélátviteli ügynökökön keresztül, míg az IMAP protokoll az e-mailek fogadására szolgál.

A Go az RFC által meghatározott e-mailekkel kapcsolatos tevékenységekhez nyújt funkcionalitást a net/smtp csomagban, amely 8BITMIME, AUTH és STARTTLS kiterjesztést is tartalmaz.

A projektben használt kód elérhető a GitHub Repository és az MIT licence alapján ingyenesen használható.

E-mailek küldése a Go-ban a Net/SMTP csomag használatával

A net/smtp csomag a Go szabványkönyvtár része, így nincs szükség külső csomag telepítésére. Használat előtt csak importálnia kell a csomagot.

import (
"net/smtp"
"napló"
"crypto/tls"
"fmt"
)

Ezenkívül importálnia kell a log csomag a hibák naplózásához a konzolon és a crypto/tls csomagot a biztonságos kapcsolat konfigurálásához.

Miután importálta a net/smtp csomagot, írjon egy a

instagram viewer
Levél küldés() funkciót az e-mail elküldéséhez, majd a fő funkcióban a funkció meghívásához.

funcfő-() {
fmt. Nyomtatás (SendMail())
}
funcLevél küldés()húr {
// Kód hozzáadása ide
}

Az Levél küldés() függvény azt a kódot tartalmazza, amely elküldi a levelet a címzetteknek.

Hogyan működik az e-mailek küldése

Az SMTP protokoll meghatározza azokat a paramétereket, amelyekkel minden levélnek rendelkeznie kell. Ezek a paraméterek a feladó és a fogadó e-mail címe, a port, amelyen a leveleket küldik, a gazdagép szerver és egy üzenet.

A fent megadott paraméterek fontosak az e-mailek küldéséhez.

Ebből az oktatóanyagból megtudhatja, hogyan küldhet Yahoo e-maileket. A folyamat azonban ugyanaz az Ön által használt levelezőkiszolgáló (MSP) esetében.

Mivel a Yahoo Mail-t használja, jelentkezzen be Yahoo levelezés fiók, menjen tovább Számlainformáció, és kattintson a Fiók biztonság lapon. Ezután generáljon alkalmazásjelszót. Neveznie kell az alkalmazást, majd a Yahoo Mail létrehoz egy jelszót az alkalmazáshoz, és használhatja a kódban szereplő jelszót az e-mail címével együtt.

Ban,-ben Levél küldés() függvényt, akkor három változót deklarál; egy változó, amely tartalmazza az e-mail szövegét, egy, amely tartalmazza az e-mail jelszavát, és egy karakterlánc, amely az e-mail címet tartalmazza, amelyre az üzeneteket küldi.

innen: := "[email protected]"
jelszó := "aSecurePasswordHere"
címre: := "[email protected]"

Használhat egy szeletet és hurok át az elemeken ha több címzettnek kívánja elküldeni őket.

Az e-mail gazdagép és port lekérése és beállítása

Az SMTP protokoll a gazdagép- és portszámokat használja az e-mail forrás azonosítására. Itt jön be az MSP. Ismernie kell azt a gazdagépet és portszámot, amelyet az MSP engedélyez.

Ellenőrizze ezt az erőforrást az MSP-állomások listájáért és portszámok ha olyan nyilvános e-maileket használ, mint a Gmail, a Yahoo vagy az Outlook. A Google kikapcsolta a „kevésbé biztonságos alkalmazásokat” a Gmailben; érdemes lehet biztonságossá tenni alkalmazását, ha Gmailt használ.

Miután megkapta a portszámot és a gazdagép címét, rendelje hozzá őket a következő változókhoz:

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

A fenti gazdagép- és portszámok a Yahoo Mailtől származnak, normál fiókokhoz való használatra. A szerver az smtp.mail.yahoo.com címen található, és Ön használhatja a portot 465 e-mailek küldésére.

Az e-mail tartalmának nyilatkozata

A következő lépés a levél tartalmának deklarálása változóként. A tárgy és a test alkotja az üzenetet.

tárgy := "Hé, csak nézlek téged."
body := "Remélem, jól vagy! Hogy vagy ma. "

Az tantárgy változó az e-mail tárgya; az test változó az elküldött e-mail törzse.

Az e-mail fejlécek beállítása

Az e-mail fejléceinek jelöléséhez karakterláncok térképét kell készítenie.

fejlécek := készítsenek(térkép[húr]húr)
headers["From"] = from
headers["To"] = ide
headers["Tárgy"] = tárgy
üzenet := ""
számára k, v := hatótávolság fejlécek {
üzenet += fmt. Sprintf("%s: %s\r", k, v)
}
üzenet += "\r" + törzs

Először is létre kell hoznia egy térképet a karakterlánc-kulcsokból és értékekből, és be kell állítania a cím fejléceit, a címzett címét és a tárgyat, a fent látható módon. Egy tartomány for-hurok használatával a fejlécek térkép, a üzenet A változó karakterlánc-formázással tartalmazza a fejléceket és az üzenetet.

Az e-mail hitelesítése

Az e-mail hitelesítést igényel a forrás ellenőrzéséhez. Az smtp csomag funkciót biztosít az e-mail hitelesítéshez a PlainAuth. Az PlainAuth metódus paraméterként veszi az identitást, a feladó e-mail-címét, a jelszavát és a gazdagépet, és visszaadja a Auth objektum, amelyet az e-mail elküldéséhez fog használni.

hitelesítés := smtp. PlainAuth("", feladó, jelszó, gazdagép)

Az identitás az Ön felhasználóneve, amely üresen hagyható, ahogy ebben az esetben is látható.

Kapcsolat létrehozása az e-mailhez

Egyes levelezési szolgáltatók megkövetelik, hogy az e-mailt kapcsolaton keresztül küldje el. Ebben a cikkben elkészítjük a TCP kapcsolat a szerverre TLS konfigurációkkal.

tlsConfig := &tls. Config{
InsecureSkipVerify: igaz,
Szervernév: gazdagép,
}

A fenti kódban a TLS-konfigurációt végezte el a Konfig struct hol InsecureSkipVerify volt beállítva igaz, és a kiszolgálónév hozzá lett rendelve a házigazda változó.

Létre kell hoznia egy TCP-kapcsolatot a Tárcsa módszere a tls csomag. Az tárcsa metódus veszi a kapcsolat típusát (TCP), ebben az esetben a szerver címét és a TLS kapcsolat konfigurációkat.


kapcsolat, err := tls. Dial("tcp", serverAddress, tlsConfig) err != nulla {
log. Pánik (hiba)
}

A fenti kódban TCP-kapcsolatot létesített és hibákat kezelt; egy új smtp csomagot fog létrehozni a NewClient módszere a net/smtp csomag. Az NewClient metódus egy kapcsolatot és egy gazdagépet vesz fel.

smtpClient, err := smtp. NewClient (kapcsolat, gazdagép)
ha hiba! = nulla {
log. Pánik (hiba)
}

Most, hogy létrehoztál egy smtp ügyfélpéldány esetén be kell állítani a paramétereit smtpClient és kezelje a hibákat.

ha err = smtpClient. Auth (hitelesítés); hiba! = nulla {
log. Pánik (hiba)
}
ha err = smtpClient. Mail (feladó); hiba! = nulla {
log. Pánik (hiba)
}
ha err = smtpClient. Rcpt (fejlécek["Címzett"]); hiba! = nulla {
log. Pánik (hiba)
}

A fenti példában átadta a hitelesítési, a feladói cím és a címzett cím paramétereket a megfelelő metódusuknak, és kezelte a hibákat.

Végül írnod ​​kell a kapcsolatpéldányba, és ezt megteheted úgy, hogy létrehozol egy írót a Adat módszered smtp kliens példa.

író, err := smtpClient. Adat()
ha hiba! = nulla {
log. Pánik (hiba)
}
_, err = író. Ír([]byte(üzenet))
ha hiba! = nulla {
log. Pánik (hiba)
}

Az író létrehozása után az üzenet egy bájtos szeletét írja a segítségével Ír módszer, mint a fenti példában.

err = író. Bezárás()
ha hiba! = nulla {
log. Pánik (hiba)
}
err = smtpClient. Kilépés()
ha hiba! = nulla {
Visszatérés
}
Visszatérés "Sikeres, a levél elküldve!"

Zárja be az írót, és lépjen ki az smtp ügyfélkapcsolati példányból a fenti kóddal. Az Levél küldés() függvény sikerüzenetet ad vissza, a fent látható módon.

Híváskor a Levél küldés() funkció a fő- funkció esetén a sikerüzenetet naplózza a konzolon, és az e-mailt el kell küldenie a címzettnek.

A Net csomagban több is van

A net csomag számos csomagot tartalmaz a hálózattal kapcsolatos funkciókhoz, és az smtp csomag csak egy ezek közül. A TCP- és HTTP-csomagokat a hálózattal kapcsolatos fejlesztésekhez is használhatja.

A net/smtp csomagot túlnyomónak találhatod, ha nem vagy háttérfejlesztő. Számos más alternatíva is létezik az e-mailek gyors, kevesebb kódsoros küldésére. Megnézheti az e-mail marketing cégeket, mint a SendGrid, a Twilio és a MailChimp, valamint a hírlevél-szolgáltatásokat, mint a Substack és a Revue, amelyek segítségével sok felhasználónak küldhet e-maileket stressz nélkül.