Möglicherweise müssen Sie häufig E-Mails an viele Konten senden, indem Sie Programme zur Authentifizierung und zu vielen anderen Zwecken verwenden.

Das SMTP-Protokoll definiert Standards, die die E-Mail-Kommunikation zwischen Mailservern und Mail-Transfer-Agenten ermöglichen, während das IMAP-Protokoll zum Empfangen von E-Mails dient.

Go bietet Funktionen für E-Mail-bezogene Aktivitäten, die durch den RFC im net/smtp-Paket definiert sind, das auch die Erweiterungen 8BITMIME, AUTH und STARTTLS enthält.

Der in diesem Projekt verwendete Code ist in a GitHub-Repository und steht Ihnen unter der MIT-Lizenz kostenlos zur Verfügung.

So senden Sie E-Mails in Go mit dem Net/SMTP-Paket

Das net/smtp-Paket ist Teil der Go-Standardbibliothek, sodass Sie kein externes Paket installieren müssen. Sie müssen das Paket nur importieren, bevor Sie es verwenden.

importieren (
"net/smtp"
"Protokoll"
"Krypto/tls"
"fmt"
)

Sie müssen auch die importieren Protokoll Paket zum Protokollieren von Fehlern in der Konsole und dem krypto/tls Paket, um eine sichere Verbindung zu konfigurieren.

Sobald Sie das net/smtp-Paket importiert haben, sollten Sie a schreiben SendMail() Funktion, um die Mail zu versenden und dann die Funktion in der Hauptfunktion aufzurufen.

Funkhauptsächlich() {
fmt. Drucken (SendMail())
}
FunkMail senden()Schnur {
// Code hier hinzufügen
}

Das SendMail() -Funktion würde den Code enthalten, der die E-Mail an die Empfänger sendet.

So funktioniert das Versenden von E-Mails

Das SMTP-Protokoll definiert die Parameter, die jede Mail haben muss. Diese Parameter sind die E-Mail-Adresse des Absenders und des Empfängers, ein Port, auf dem die E-Mail gesendet wird, ein Host-Server und eine Nachricht.

Die oben genannten Parameter sind für das Versenden von E-Mails wichtig.

In diesem Tutorial erfahren Sie, wie Sie Yahoo-E-Mails senden. Der Vorgang ist jedoch für jeden von Ihnen verwendeten Mailserver-Anbieter (MSP) gleich.

Da Sie Yahoo Mail verwenden, melden Sie sich bei Ihrem an Yahoo Mail Konto, gehen Sie weiter zu Kontoinformation, und klicken Sie auf die Konto Sicherheit Tab. Generieren Sie dann ein App-Passwort. Sie müssen der App einen Namen geben, und dann erstellt Yahoo Mail ein Passwort für die App, und Sie können das Passwort in Ihrem Code zusammen mit Ihrer E-Mail-Adresse verwenden.

In dem SendMail() Funktion deklarieren Sie drei Variablen; eine Variable, die die Zeichenfolge Ihrer E-Mail enthält, eine, die Ihr E-Mail-Passwort enthält, und eine Zeichenfolge, die die E-Mail-Adresse enthält, an die Sie Nachrichten senden.

von := "[email protected]"
Passwort := "aSecurePasswordHere"
an := "[email protected]"

Sie können ein Slice und verwenden Schleife durch die Elemente wenn Sie beabsichtigen, sie an mehrere Empfänger zu senden.

Abrufen und Einstellen des E-Mail-Hosts und -Ports

Das SMTP-Protokoll verwendet die Host- und Portnummern, um die E-Mail-Quelle zu identifizieren. Hier kommt Ihr MSP ins Spiel. Sie müssen den Host und die Portnummer kennen, die Ihnen Ihr MSP erlaubt.

Überprüfen Sie diese Ressource auf eine Liste von MSP-Hosts und Portnummern wenn Sie öffentliche E-Mails wie Gmail, Yahoo oder Outlook verwenden. Google hat „weniger sichere Apps“ für Gmail deaktiviert; Möglicherweise möchten Sie Ihre Anwendung sichern, wenn Sie Gmail verwenden.

Sobald Sie die Portnummer und die Hostadresse haben, weisen Sie sie Variablen wie dieser zu:

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

Die oben genannten Host- und Portnummern stammen von Yahoo Mail zur Verwendung mit regulären Konten. Der Server wird auf smtp.mail.yahoo.com gehostet, und Sie dürfen den Port verwenden 465 E-Mails zu senden.

Deklarieren des Inhalts der E-Mail

Der nächste Schritt besteht darin, den Inhalt der Mail als Variablen zu deklarieren. Der Betreff und der Körper bilden die Nachricht.

Betreff := "Hey, ich sehe nur nach dir."
body := „Ich hoffe, es geht dir gut! Wie geht es dir heute. "

Das Thema variable ist der Betreff der E-Mail; das Karosserie Variable ist der Text der E-Mail, die Sie senden.

Festlegen der E-Mail-Kopfzeilen

Sie müssen eine Zuordnung von Zeichenfolgen erstellen, um die Kopfzeilen der E-Mail zu kennzeichnen.

Kopfzeilen := machen(Karte[Schnur]Schnur)
headers["Von"] = von
headers["An"] = an
headers["Betreff"] = Betreff
Nachricht := ""
zum k, v := Angebot Überschriften {
Nachricht += fmt. Sprintf("%s: %s\r", k, v)
}
Nachricht += "\r" + Körper

Zuerst erstellen Sie eine Zuordnung von Zeichenfolgenschlüsseln und -werten und legen die Kopfzeilen Ihrer Adresse, die Adresse des Empfängers und den Betreff fest, wie oben gezeigt. Verwenden einer Range-for-Schleife auf der Kopfzeilen Karte, a Botschaft Die Variable wird so deklariert, dass sie die Header und die Nachricht mit Zeichenfolgenformatierung enthält.

Authentifizieren der E-Mail

Die E-Mail muss authentifiziert werden, um die Quelle zu überprüfen. Das smtp-Paket bietet Funktionen für die E-Mail-Authentifizierung mit der PlainAuth. Das PlainAuth Die Methode übernimmt die Identität, die E-Mail des Absenders, das Passwort und den Host als Parameter und gibt eine zurück Auth Objekt, das Sie zum Senden der E-Mail verwenden.

authentifizieren := smtp. PlainAuth("", from, password, host)

Die Identität ist Ihr Benutzername, der wie in diesem Fall leer gelassen werden kann.

Erstellen einer Verbindung für die E-Mail

Bei einigen Mail-Dienstanbietern müssen Sie die E-Mail über eine Verbindung senden. In diesem Artikel machen wir eine TCP-Verbindung zum Server mit TLS-Konfigurationen.

tlsConfig := &tls. Konfig{
UnsicherSkipVerify: Stimmt,
Servername: Host,
}

Im obigen Code haben Sie eine TLS-Konfiguration vorgenommen, indem Sie auf die verwiesen haben Konfig Struktur wo UnsicherSkipVerify eingestellt war Stimmt, und der Servername wurde dem zugewiesen Gastgeber Variable.

Sie müssen eine TCP-Verbindung mit dem erstellen Wählen Methode der tls Paket. Das wählen -Methode übernimmt den Verbindungstyp (TCP), in diesem Fall die Serveradresse und die TLS-Verbindungskonfigurationen.


Verbindung, err := tls. Dial("tcp", serverAddress, tlsConfig) err != Null {
Protokoll. Panik (äh)
}

Im obigen Code haben Sie eine TCP-Verbindung hergestellt und Fehler behandelt; Sie haben ein neues SMTP-Paket mithilfe von instanziiert Neuer Kunde Methode der net/smtp Paket. Das Neuer Kunde -Methode nimmt eine Verbindung bzw. einen Host auf.

smtpClient, err := smtp. NewClient (Verbindung, Host)
wenn äh != Null {
Protokoll. Panik (äh)
}

Jetzt, da Sie eine erstellt haben smtp Client-Instanz müssen Sie die Parameter der smtpClient und Fehler behandeln.

wenn Fehler = smtpClient. Auth (authentifizieren); äh != Null {
Protokoll. Panik (äh)
}
wenn Fehler = smtpClient. Mail von); äh != Null {
Protokoll. Panik (äh)
}
wenn Fehler = smtpClient. Rcpt (header["To"]); äh != Null {
Protokoll. Panik (äh)
}

Im obigen Beispiel haben Sie die Parameter Authentifizierung, Absenderadresse und Empfängeradresse an ihre jeweiligen Methoden übergeben und Fehler behandelt.

Schließlich müssen Sie in die Verbindungsinstanz schreiben, und Sie können dies tun, indem Sie einen Writer mit der erstellen Daten Methode von dir SMTP-Client Beispiel.

Writer, Fehler := smtpClient. Daten()
wenn äh != Null {
Protokoll. Panik (äh)
}
_, err = Schreiber. Schreiben([]Byte(Botschaft))
wenn äh != Null {
Protokoll. Panik (äh)
}

Nachdem Sie einen Writer erstellt haben, schreiben Sie mithilfe von einen Byte-Slice der Nachricht Schreiben Methode wie im obigen Beispiel.

err = Schriftsteller. Nah dran()
wenn äh != Null {
Protokoll. Panik (äh)
}
Fehler = smtpClient. Aufhören()
wenn äh != Null {
Rückkehr
}
Rückkehr "Erfolgreich, die Mail wurde versendet!"

Schließen Sie den Writer und beenden Sie die SMTP-Client-Verbindungsinstanz mit dem obigen Code. Das SendMail() Funktion gibt eine Erfolgsmeldung zurück, wie oben gezeigt.

Beim Aufrufen der SendMail() Funktion in der hauptsächlich Funktion, sollten Sie die Erfolgsmeldung in Ihrer Konsole protokolliert und die E-Mail an Ihren Empfänger gesendet bekommen.

Das Net-Paket hat noch mehr zu bieten

Das net-Paket enthält viele Pakete für netzwerkbezogene Funktionalitäten und das smtp-Paket ist nur eines davon. Sie können auch die TCP- und HTTP-Pakete für die netzwerkbezogene Entwicklung verwenden.

Wenn Sie kein Backend-Entwickler sind, finden Sie das net/smtp-Paket möglicherweise überwältigend. Es gibt viele andere Alternativen zum schnellen Versenden von E-Mails mit weniger Codezeilen. Sie können sich E-Mail-Marketing-Unternehmen wie SendGrid, Twilio und MailChimp sowie Newsletter-Dienste wie Substack und Revue ansehen, mit denen Sie E-Mails stressfrei an viele Benutzer senden können.