Come inviare posta in Go utilizzando il pacchetto e-mail

Come inviare posta in Go utilizzando il pacchetto e-mail

Mentre crei app, dovrai inviare e-mail per scopi diversi, dalle notifiche all’autenticazione e molti altri. Go fornisce i pacchetti smtp e mail nella sua libreria standard per l’invio di posta elettronica. Ci sono anche molti pacchetti di posta elettronica di terze parti nell’ecosistema Go.

I pacchetti di posta incorporati rendono l’invio di e-mail un’attività complessa. Se non sei uno sviluppatore di applicazioni lato server, potresti trovare i pacchetti smtp e mail difficili da usare e configurare.

Un’alternativa popolare è il pacchetto di posta elettronica di Jordan Wright che astrae la complessità dell’invio di posta. Aggiunge anche funzionalità che non troverai nei pacchetti smtp e mail .

Iniziare con il pacchetto e-mail

anteprima del pacchetto e-mail github

Il pacchetto email è una libreria leggera, robusta e flessibile, popolare per la sua semplicità. Con poche righe di codice, puoi creare e inviare un’e-mail con allegati, contenuto HTML e altro. Il pacchetto supporta anche funzionalità avanzate come connessioni SMTP sicure e destinatari multipli, rendendolo uno strumento versatile per le tue esigenze di posta elettronica.

Il pacchetto e-mail supporta anche campi CC e BCC, indirizzi e-mail in più formati, conferme di lettura e intestazioni personalizzate.

Poiché il pacchetto non è integrato nella libreria standard Go, dovrai installarlo con il comando go get . Il pacchetto email supporta le versioni Go 1.15 e successive.

Esegui questo comando per installare il pacchetto nelle dipendenze del tuo progetto dopo aver inizializzato un nuovo progetto.

go get github.com/jordan-wright/email

Una volta installato il pacchetto email, puoi importarlo specificando la posizione relativa al tuo percorso di installazione:

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

Utilizzerai il pacchetto fmt per stampare l’output sulla console e il pacchetto smtp per scopi di autenticazione.

Invio di posta con il pacchetto e-mail

Dovrai dichiarare le variabili per memorizzare i dati per la tua posta. Dichiara le variabili per la tua email e password.

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

È possibile codificare la password o utilizzare un file di variabile di ambiente per una maggiore sicurezza.

Le variabili mail e password dovrebbero contenere rispettivamente la tua email e la tua password.

Dovrai dichiarare le variabili per l’indirizzo host e il numero di porta per la posta. Ecco l’indirizzo host e il numero di porta per la posta di Yahoo:

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

Dovrai anche creare una nuova istanza email per inviare email con il pacchetto email . Puoi utilizzare il metodo NewEmail del pacchetto email per inizializzare un’istanza email per la tua posta:

newEmail: = email.NewEmail()

Il metodo NewEmail restituisce un’istanza struct che puoi modificare per gli elementi della tua email.

Puoi utilizzare i campi Da e A della struttura per aggiungere le e-mail del mittente e del destinatario alla tua istanza di posta elettronica.

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

Il campo A è una porzione di stringhe con capacità illimitata che puoi utilizzare per dichiarare tutti gli indirizzi dei destinatari.

Puoi aggiungere i campi CC e BCC della tua email utilizzando i campi Ccn e Cc dell’istanza struct:

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

Per i contenuti della posta, puoi aggiungere l’oggetto e il contenuto del testo della tua email utilizzando i campi Oggetto e Testo della struct. L’oggetto è un campo stringa e il contenuto del testo è una porzione di byte.

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

Dopo aver aggiunto tutti i campi obbligatori, puoi inviare l’email utilizzando il metodo Send della tua istanza email. Il metodo Send accetta l’indirizzo host, il numero di porta dell’host e un’istanza di PlainAuth del pacchetto 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")
}

Il metodo Send restituisce un errore che puoi gestire o nil se non ci sono errori.

risultato dell'invio della mail

Hai inviato con successo una mail con il pacchetto email con meno righe di quelle che dovresti scrivere per inviare una mail con il pacchetto smtp .

Puoi inviare posta con il pacchetto SMTP integrato

Go è un linguaggio ben progettato poiché la sua libreria standard viene fornita con la maggior parte delle funzionalità necessarie per creare applicazioni Web complete senza dipendenze esterne o pacchetti di terze parti.

Il pacchetto smtp è utile per inviare e-mail tramite vari servizi con funzionalità simili al pacchetto e- mail .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *