首页  >  文章  >  后端开发  >  如何在不使用 SMTP 服务器的情况下在 Go 中发送电子邮件?

如何在不使用 SMTP 服务器的情况下在 Go 中发送电子邮件?

Linda Hamilton
Linda Hamilton原创
2024-10-25 09:58:02378浏览

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

在没有 SMTP 服务器的情况下在 Go 中发送电子邮件

您寻求通过 Go 服务器应用程序发送批量邮件,避免潜在的配额限制第三方 SMTP 服务器。

替代方法

遗憾的是,如果不直接与 SMTP 服务器交互,发送电子邮件是不可行的。

委派给外部程序

要绕过 SMTP 服务器,请考虑将任务委派给另一个能够发送电子邮件的程序。

在 POSIX 系统(例如 Linux)上,您通常可以查找 /usr/sbin/sendmail 或 /usr/bin/sendmail 等实用程序。这些程序接受电子邮件并转发它们以进行传递。

使用 gomail 库

为了简化此过程,gomail 库提供了一个用户友好的 API 用于与外部交互电子邮件发送实用程序,如 Sendmail。

以下是使用 gomail 包的示例:

<code class="go">import (
    "bytes"
    "os/exec"

    "github.com/go-gomail/gomail"
)

const sendmail = "/usr/sbin/sendmail"

func sendEmail(m *gomail.Message) error {
    cmd := exec.Command(sendmail, "-t")
    cmd.Stdin = bytes.NewReader([]byte(m.Format()))

    if err := cmd.Run(); err != nil {
        return err
    }

    return nil
}</code>

依赖 MTA 的优点

虽然它可能在没有 SMTP 服务器的情况下处理电子邮件发送似乎很方便,依靠像 Sendmail 这样的 MTA(邮件传输代理)具有以下优点:

  • 电子邮件队列: MTA 提供邮件队列,确保消息即使在临时网络中断期间也能交付。

以上是如何在不使用 SMTP 服务器的情况下在 Go 中发送电子邮件?的详细内容。更多信息请关注PHP中文网其他相关文章!

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