Maison >développement back-end >Golang >Puis-je envoyer des e-mails en Go sans utiliser de serveur SMTP ?
Envoi d'e-mails sans serveur SMTP dans Go
Question :
Vous souhaitez envoyer envoyez des e-mails en masse sans recourir à un serveur SMTP externe en raison de limitations d'utilisation. Pouvez-vous envoyer des emails sans serveur SMTP en utilisant la bibliothèque standard de Go ?
Réponse :
Pour envoyer des emails sans serveur SMTP, vous devez déléguer la tâche à un autre programme capable d'envoyer des emails. Dans les systèmes POSIX, le programme /usr/sbin/sendmail est souvent disponible à cet effet. Vous pouvez l'appeler avec l'option -t pour récupérer les adresses des destinataires à partir des en-têtes To du message.
Utilisation de la bibliothèque standard avec Sendmail
Vous pouvez utiliser l'os/exec , net/mail et net/textproto pour appeler Sendmail directement, mais le package gomail fournit une solution plus simple. Son type Message inclut une méthode WriteTo() qui peut écrire sur une instance Sendmail en cours d'exécution. Voici un exemple :
<code class="go">import ( "os/exec" "github.com/go-gomail/gomail" ) const sendmailPath = "/usr/sbin/sendmail" func sendEmail(m *gomail.Message) error { cmd := exec.Command(sendmailPath, "-t") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr stdin, err := cmd.StdinPipe() if err != nil { return err } if err := cmd.Start(); err != nil { return err } if _, err := m.WriteTo(stdin); err != nil { return err } if err := stdin.Close(); err != nil { return err } if err := cmd.Wait(); err != nil { return err } return nil }</code>
Avantages de l'utilisation d'un MTA :
Bien que l'utilisation d'un MTA puisse sembler une étape supplémentaire, elle offre l'avantage de la mise en file d'attente des messages. Si un MTA ne peut pas transmettre un message immédiatement, par exemple lors d'une panne de réseau, il stockera le message dans une file d'attente et tentera à plusieurs reprises de le transmettre jusqu'à ce qu'il réussisse ou qu'un délai d'attente se produise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!