首頁  >  文章  >  後端開發  >  如何在不使用 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