如何在Go中发送带有附件的电子邮件

m2xkgtsf  于 2023-09-28  发布在  Go
关注(0)|答案(5)|浏览(281)

我已经找到了这个库,并已设法发送一个附件在一个空的电子邮件,但不是合并文本和附件。
https://github.com/sloonz/go-mime-message
如何才能做到这一点?

relj7zay

relj7zay1#

最后我自己实现了它:https://github.com/scorredoira/email
用法很简单:

m := email.NewMessage("Hi", "this is the body")
m.From = "[email protected]"
m.To = []string{"[email protected]"}

err := m.Attach("picture.png")
if err != nil {
    log.Println(err)
}

err = email.Send("smtp.gmail.com:587", smtp.PlainAuth("", "user", "password", "smtp.gmail.com"), m)
nr9pn0ug

nr9pn0ug2#

我为此创建了gomail。它支持附件以及多部分电子邮件和非ASCII字符的编码。它是有据可查的,并经过了测试。
下面是一个示例:

package main

func main() {
    m := gomail.NewMessage()
    m.SetHeader("From", "[email protected]")
    m.SetHeader("To", "[email protected]", "[email protected]")
    m.SetAddressHeader("Cc", "[email protected]", "Dan")
    m.SetHeader("Subject", "Hello!")
    m.SetBody("text/html", "Hello <b>Bob</b> and <i>Cora</i>!")
    m.Attach("/home/Alex/lolcat.jpg")

    d := gomail.NewPlainDialer("smtp.example.com", 587, "user", "123456")

    // Send the email to Bob, Cora and Dan.
    if err := d.DialAndSend(m); err != nil {
        panic(err)
    }
}
pn9klfpd

pn9klfpd3#

我更喜欢使用https://github.com/jordan-wright/email来发送电子邮件。它支持附件。

人类邮箱

电子邮件包的设计是简单易用,但足够灵活,以便不受限制。我们的目标是为人类提供一个电子邮件界面。
电子邮件包目前支持以下内容:

  • “发件人”、“收件人”、“密件抄送”和“抄送”字段
  • email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)”和“First Last”格式的电子邮件地址
  • 文本和HTML消息正文
  • 附件
  • 阅读回执
  • 自定义信头
  • 更多精彩内容!
cngwdvgl

cngwdvgl4#

SMTP协议中的附件使用多部分MIME消息发送。
所以我建议你

  • 创建MultipartMessage
  • 将第一部分的文本设置为TextMessage(使用"Content-Type", "text/plain"
  • 使用AddPart将附件添加为部件。
c0vxltue

c0vxltue5#

如果你不想要一个你仍然需要编写自己的Golang代码的库,而只是一个(CLI)应用程序,我做了这个:https://github.com/pepa65/mailer

相关问题