Go で SMTP サーバーを使用せずにメールを送信する
質問:
は送信できますか?サードパーティの SMTP サーバーを使用せずに大量の電子メールを送信しますか?標準ライブラリの SMTP パッケージは解決策を提供できますか?
答え:
SMTP サーバーを使用せずに電子メールを直接送信することは実現できません。ただし、電子メール送信機能を持つ他のプログラムを利用することもできます。
外部プログラムを使用したアプローチ:
推奨されるアプローチの 1 つは、Sendmail や Nullmailer などの外部プログラムを利用することです。これらのプログラムは電子メール配信を処理し、Go の os/exec パッケージを使用して呼び出すことができます。
具体的には、gomail.Message 型の WriteTo メソッドを使用して、実行中の Sendmail インスタンスに電子メールを直接送信できます。コード スニペットの例を次に示します。
<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>
MTA を使用する利点:
SMTP サーバーの使用とは直接関係ありませんが、本格的なメール転送エージェント (MTA) を利用します。 ) Sendmail と同様に、追加の利点があります。 MTA はメール キューを提供し、ネットワークが停止した場合でもメールが確実に配信されるようにします。
以上が## Go での一括メール送信のために SMTP サーバーをバイパスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。