如何使用带有HTML格式的正文的Go发送电子邮件?

时间:2012-03-30 20:36:04

标签: email go

这似乎是一个非常普遍的需求,但是当我搜索它时,我找不到任何好的指南。

3 个答案:

答案 0 :(得分:50)

假设您正在使用net / smtp包以及smtp.SendMail函数,您只需要在消息中声明MIME类型。

mime := "MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n";
subject := "Subject: Test email from Go!\n"
msg := []byte(subject + mime + "<html><body><h1>Hello World!</h1></body></html>")

smtp.SendMail(server, auth, from, to, msg)

希望这有助于=)

答案 1 :(得分:15)

我是gomail的作者。使用此软件包,您可以轻松发送HTML电子邮件:

package main

import (
    "gopkg.in/gomail.v2"
)

func main() {
    m := gomail.NewMessage()
    m.SetHeader("From", "alex@example.com")
    m.SetHeader("To", "bob@example.com")
    m.SetHeader("Subject", "Hello!")
    m.SetBody("text/html", "Hello <b>Bob</b>!")

    // Send the email to Bob
    d := gomail.NewPlainDialer("smtp.example.com", 587, "user", "123456")
    if err := d.DialAndSend(m); err != nil {
        panic(err)
    }
}

您还可以使用AddAlternative方法为不支持HTML的客户端在电子邮件中添加正文的正文版本。

答案 2 :(得分:1)

这是@GreyHands回答的附录:

我遇到的问题是即使在设置MIME /内容类型后我的html标签显示为纯文本

原来我导入了html/template并且转义导致html显示为纯文本。相反,导入text/template修复了问题。