E-Mails ohne SMTP-Server in Go senden
Frage:
Sie möchten senden Massen-E-Mails, ohne aufgrund von Nutzungsbeschränkungen auf einen externen SMTP-Server angewiesen zu sein. Können Sie mit der Standardbibliothek von Go E-Mails ohne SMTP-Server versenden?
Antwort:
Um E-Mails ohne SMTP-Server zu versenden, müssen Sie die Aufgabe an ein anderes geeignetes Programm delegieren des Versendens von E-Mails. In POSIX-Systemen steht hierfür häufig das Programm /usr/sbin/sendmail zur Verfügung. Sie können es mit der Option -t aufrufen, um Empfängeradressen aus den An-Headern der Nachricht abzurufen.
Verwenden der Standardbibliothek mit Sendmail
Sie können die Datei os/exec verwenden , net/mail und net/textproto-Pakete, um Sendmail direkt aufzurufen, aber das gomail-Paket bietet eine einfachere Lösung. Sein Nachrichtentyp umfasst eine WriteTo()-Methode, die in eine laufende Sendmail-Instanz schreiben kann. Hier ist ein Beispiel:
<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>
Vorteile der Verwendung eines MTA:
Während die Verwendung eines MTA wie ein zusätzlicher Schritt erscheinen mag, bietet sie den Vorteil der E-Mail-Warteschlange. Wenn ein MTA eine Nachricht nicht sofort zustellen kann, beispielsweise während eines Netzwerkausfalls, speichert er die Nachricht in einer Warteschlange und versucht wiederholt, sie zuzustellen, bis dies erfolgreich ist oder eine Zeitüberschreitung auftritt.
Das obige ist der detaillierte Inhalt vonKann ich unterwegs E-Mails versenden, ohne einen SMTP-Server zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!