So senden Sie E-Mails in Go mit dem E-Mail-Paket
Beim Erstellen von Apps müssen Sie E-Mails für verschiedene Zwecke senden, von Benachrichtigungen bis hin zur Authentifizierung und vielem mehr. Go stellt die SMTP- und Mail- Pakete in seiner Standardbibliothek zum Versenden von E-Mails bereit. Es gibt auch viele E-Mail-Pakete von Drittanbietern im Go-Ökosystem.
Die integrierten E-Mail-Pakete machen das Versenden von E-Mails zu einer komplexen Aufgabe. Wenn Sie kein Entwickler serverseitiger Anwendungen sind, finden Sie die SMTP- und Mail- Pakete möglicherweise schwierig zu verwenden und zu konfigurieren.
Eine beliebte Alternative ist das E- Mail -Paket von Jordan Wright, das die Komplexität des E-Mail-Versands abstrahiert. Es fügt auch Funktionen hinzu, die Sie in den SMTP- und Mail- Paketen nicht finden werden.
Erste Schritte mit dem E-Mail-Paket
Das E- Mail -Paket ist eine leichtgewichtige, robuste und flexible Bibliothek, die wegen ihrer Einfachheit beliebt ist. Mit nur wenigen Codezeilen können Sie eine E-Mail mit Anhängen, HTML-Inhalten und mehr erstellen und versenden. Das Paket unterstützt auch erweiterte Funktionen wie sichere SMTP-Verbindungen und mehrere Empfänger, was es zu einem vielseitigen Tool für Ihre E-Mail-Anforderungen macht.
Das E-Mail-Paket unterstützt auch CC- und BCC-Felder, E-Mail-Adressen in mehreren Formaten, Lesebestätigungen und benutzerdefinierte Kopfzeilen.
Da das Paket nicht in die Go-Standardbibliothek integriert ist, müssen Sie es mit dem Befehl go get installieren. Das E-Mail-Paket unterstützt die Go-Versionen 1.15 und höher.
Führen Sie diesen Befehl aus, um das Paket nach der Initialisierung eines neuen Projekts in den Abhängigkeiten Ihres Projekts zu installieren.
go get github.com/jordan-wright/email
Nachdem Sie das E-Mail-Paket installiert haben, können Sie es importieren, indem Sie den Speicherort relativ zu Ihrem Installationspfad angeben:
import (
"fmt"
"github.com/jordan-wright/email"
"net/smtp"
)
Sie verwenden das fmt -Paket, um die Ausgabe an die Konsole und das smtp -Paket für Authentifizierungszwecke zu drucken.
E-Mails mit dem E-Mail-Paket versenden
Sie müssen Variablen deklarieren, um die Daten für Ihre Mail zu speichern. Deklarieren Sie Variablen für Ihre E-Mail und Ihr Passwort.
mail: = "your email"
password: = "your app password"
Sie können das Kennwort fest codieren oder eine Umgebungsvariablendatei für verbesserte Sicherheit verwenden.
Die mail- und password – Variablen sollten Ihre E-Mail-Adresse bzw. Ihr Passwort enthalten.
Sie müssen Variablen für die Hostadresse und die Portnummer für die Mail deklarieren. Hier sind die Hostadresse und die Portnummer für Yahoo Mail:
hostAddress: = "smtp.mail.yahoo.com"
hostPort: = "465"
Sie müssen auch eine neue E-Mail-Instanz erstellen, um E-Mails mit dem E- Mail -Paket zu senden. Sie können die NewEmail-Methode des E- Mail -Pakets verwenden, um eine E-Mail-Instanz für Ihre E-Mail zu initialisieren:
newEmail: = email.NewEmail()
Die NewEmail- Methode gibt eine Strukturinstanz zurück, die Sie für die Elemente Ihrer E-Mail ändern können.
Sie können die Felder „ Von “ und „ An “ der Struktur verwenden , um die Absender- und Empfänger-E-Mails zu Ihrer E-Mail-Instanz hinzuzufügen.
newEmail.From = mail
newEmail.To = []string{"list of recipients"}
Das Feld „ An “ ist eine Zeichenfolge mit unbegrenzter Kapazität, die Sie verwenden können, um alle Ihre Empfängeradressen anzugeben.
Sie können CC- und BCC -Felder Ihrer E-Mail hinzufügen, indem Sie die Bcc- und Cc – Felder der Strukturinstanz verwenden:
newEmail.Bcc = []string{"list of bcc"}
newEmail.Cc = []string{"list of cc"}
Für den Inhalt der E-Mail können Sie den Betreff und den Textinhalt Ihrer E-Mail hinzufügen, indem Sie die Felder Betreff und Text der Struktur verwenden. Der Betreff ist ein Zeichenfolgenfeld und der Textinhalt ist ein Byte-Slice.
newEmail.Subject = "The Email subject"
newEmail.Text = []byte("Body of your email")
Nachdem Sie alle erforderlichen Felder hinzugefügt haben, können Sie die E-Mail mit der Send -Methode Ihrer E-Mail-Instanz senden. Die Methode Send übernimmt die Hostadresse, die Portnummer des Hosts und eine Instanz des PlainAuth des SMTP -Pakets .
err: = newEmail.Send(
fmt.Sprintf("%s:%s", hostAddress, hostPort),
smtp.PlainAuth("", mail, password, hostAddress)
)
if err! = nil {
fmt.Println("There was an error sending the mail")
} else {
fmt.Println("The mail was sent successfully")
}
Die Send -Methode gibt einen Fehler zurück, den Sie behandeln können, oder nil , wenn keine Fehler vorhanden sind.
Sie haben erfolgreich eine E-Mail mit dem E- Mail- Paket mit weniger Zeilen gesendet, als Sie schreiben müssten, um eine E-Mail mit dem SMTP -Paket zu senden.
Sie können E-Mails mit dem integrierten SMTP-Paket senden
Go ist eine gut geplante Sprache, da ihre Standardbibliothek mit den meisten Funktionen geliefert wird, die Sie zum Erstellen vollständiger Webanwendungen ohne externe Abhängigkeiten oder Pakete von Drittanbietern benötigen.
Das SMTP -Paket ist praktisch, um E-Mails über verschiedene Dienste mit ähnlichen Funktionen wie das E- Mail -Paket zu senden.
Schreibe einen Kommentar