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
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.