Maison > développement back-end > Golang > le corps du texte

Puis-je envoyer des e-mails en Go sans utiliser de serveur SMTP ?

DDD
Libérer: 2024-10-25 20:27:02
original
991 Les gens l'ont consulté

Can I Send Emails in Go Without Using an SMTP Server?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!