Envoi d'e-mails sans serveurs SMTP dans Go
Question :
Est-il possible d'envoyer envoyer des e-mails en masse sans utiliser de serveurs SMTP tiers ? Le package SMTP de la bibliothèque standard peut-il apporter une solution ?
Réponse :
L'envoi direct d'e-mails sans serveur SMTP n'est pas réalisable. Cependant, vous pouvez utiliser d'autres programmes dotés de capacités d'envoi d'e-mails.
Approche utilisant des programmes externes :
Une approche recommandée consiste à tirer parti de programmes externes tels que Sendmail ou Nullmailer. Ces programmes gèrent la livraison des e-mails et peuvent être invoqués à l'aide du package os/exec dans Go.
Plus précisément, vous pouvez utiliser la méthode WriteTo du type gomail.Message pour envoyer des e-mails directement à une instance Sendmail en cours d'exécution. Voici un exemple d'extrait de code :
<code class="go">import ( "os" "os/exec" "github.com/gomail/gomail" ) func submitMail(m *gomail.Message) (err error) { const sendmail = "/usr/sbin/sendmail" cmd := exec.Command(sendmail, "-t") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr pw, err := cmd.StdinPipe() if err != nil { return } err = cmd.Start() if err != nil { return } var errs [3]error _, errs[0] = m.WriteTo(pw) errs[1] = pw.Close() errs[2] = cmd.Wait() for _, err = range errs { if err != nil { return } } return }</code>
Avantages de l'utilisation des MTA :
Bien que cela ne soit pas directement lié à l'utilisation du serveur SMTP, l'utilisation d'agents de transfert de courrier (MTA) à part entière ) comme Sendmail offre des avantages supplémentaires. Les MTA assurent la mise en file d'attente du courrier, garantissant que les e-mails sont livrés de manière fiable même en cas de panne de réseau.
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!