首页 >后端开发 >Golang >## 在 Go 中可以绕过 SMTP 服务器进行批量电子邮件发送吗?

## 在 Go 中可以绕过 SMTP 服务器进行批量电子邮件发送吗?

DDD
DDD原创
2024-10-25 10:57:311010浏览

## Can You Bypass SMTP Servers for Bulk Emailing in Go?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn