Recherche de site Web

Comment envoyer du courrier en Go à l'aide du package de messagerie


Utilisez cette alternative au package de messagerie intégré de Go pour plus de simplicité.

Au fur et à mesure que vous créez des applications, vous devrez envoyer des e-mails à différentes fins, des notifications à l'authentification, et bien d'autres encore. Go fournit les packages smtp et mail dans sa bibliothèque standard pour l'envoi d'e-mails. Il existe également de nombreux packages de messagerie tiers dans l'écosystème Go.

Les packages de messagerie intégrés font de l'envoi d'e-mails une tâche complexe. Si vous n'êtes pas un développeur d'applications côté serveur, vous trouverez peut-être les packages smtp et mail difficiles à utiliser et à configurer.

Une alternative populaire est le package email de Jordan Wright, qui résume la complexité de l'envoi de courrier. Il ajoute également des fonctionnalités que vous ne trouverez pas dans les packages smtp et mail.

Premiers pas avec le package de courrier électronique

Le package email est une bibliothèque légère, robuste et flexible, appréciée pour sa simplicité. Avec seulement quelques lignes de code, vous pouvez créer et envoyer un e-mail contenant des pièces jointes, du contenu HTML, etc. Le package prend également en charge des fonctionnalités avancées telles que des connexions SMTP sécurisées et plusieurs destinataires, ce qui en fait un outil polyvalent pour vos besoins de messagerie.

Le package de messagerie prend également en charge les champs CC et BCC, les adresses e-mail dans plusieurs formats, les accusés de lecture et les en-têtes personnalisés.

Étant donné que le package n'est pas intégré à la bibliothèque standard Go, vous devrez l'installer avec la commande go get. Le package de messagerie prend en charge les versions Go 1.15 et supérieures.

Exécutez cette commande pour installer le package dans les dépendances de votre projet après avoir initialisé un nouveau projet.

go get github.com/jordan-wright/email

Une fois que vous avez installé le package de messagerie, vous pouvez l'importer en spécifiant l'emplacement par rapport à votre chemin d'installation :

import (
    "fmt"
    "github.com/jordan-wright/email"
    "net/smtp"
)

Vous utiliserez le package fmt pour imprimer la sortie sur la console et le package smtp à des fins d'authentification.

Envoi de mails avec le package de messagerie

Vous devrez déclarer des variables pour stocker les données de votre courrier. Déclarez des variables pour votre email et votre mot de passe.

mail := "your email"
password := "your app password"

Vous pouvez coder en dur le mot de passe ou utiliser un fichier de variable d'environnement pour une sécurité améliorée.

Les variables mail et mot de passe doivent contenir respectivement votre adresse e-mail et votre mot de passe.

Vous devrez déclarer des variables pour l'adresse de l'hôte et le numéro de port du courrier. Voici l'adresse de l'hôte et le numéro de port pour Yahoo Mail :

hostAddress := "smtp.mail.yahoo.com"
hostPort := "465"

Vous devrez également créer une nouvelle instance de messagerie pour envoyer des e-mails avec le package e-mail. Vous pouvez utiliser la méthode NewEmail du package email pour initialiser une instance de messagerie pour votre courrier :

newEmail := email.NewEmail()

La méthode NewEmail renvoie une instance de structure que vous pouvez modifier pour les éléments de votre email.

Vous pouvez utiliser les champs De et À de la structure pour ajouter les e-mails de l'expéditeur et du destinataire à votre instance de messagerie.

newEmail.From = mail
newEmail.To = []string{"list of recipients"}

Le champ À est une tranche de chaînes à capacité illimitée que vous pouvez utiliser pour déclarer toutes vos adresses de destinataires.

Vous pouvez ajouter les champs CC et BCC de votre email en utilisant les champs Cci et Cc de l'instance struct :

newEmail.Bcc = []string{"list of bcc"}
newEmail.Cc = []string{"list of cc"}

Pour le contenu du mail, vous pouvez ajouter le sujet et le contenu du texte de votre email en utilisant les champs Objet et Texte de la structure. Le sujet est un champ de chaîne et le contenu du texte est une tranche d'octets.

newEmail.Subject = "The Email subject"
newEmail.Text = []byte("Body of your email")

Après avoir ajouté tous les champs obligatoires, vous pouvez envoyer l'e-mail en utilisant la méthode Envoyer de votre instance de messagerie. La méthode Send prend en compte l'adresse de l'hôte, le numéro de port de l'hôte et une instance de PlainAuth du package smtp.

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")
}

La méthode Send renvoie une erreur que vous pouvez gérer ou nil s'il n'y a aucune erreur.

Vous avez envoyé avec succès un e-mail avec le package email avec moins de lignes que ce qu'il vous faudrait écrire pour envoyer un e-mail avec le package smtp.

Vous pouvez envoyer du courrier avec le package SMTP intégré

Go est un langage bien planifié puisque sa bibliothèque standard est livrée avec la plupart des fonctionnalités dont vous aurez besoin pour créer des applications Web complètes sans dépendances externes ni packages tiers.

Le package smtp est pratique pour envoyer des e-mails via divers services avec des fonctionnalités similaires au package e-mail.

Articles connexes: