在 Go 中没有 SMTP 服务器发送电子邮件
问题:
是否可以发送不使用第三方 SMTP 服务器批量发送电子邮件?标准库的SMTP包能提供解决方案吗?
答案:
没有SMTP服务器直接发送邮件是不可行的。但是,您可以利用其他具有电子邮件发送功能的程序。
使用外部程序的方法:
一种推荐的方法是利用 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中文网其他相关文章!