Это кажется очень распространенной потребностью, но я не нашел хороших руководств, когда искал его.
Как отправить электронное письмо с помощью Go с HTML-форматированным телом?
Ответ 1
Предполагая, что вы используете пакет 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)
Надеюсь, что это поможет =)
Ответ 2
Я являюсь автором gomail. С помощью этого пакета вы можете легко отправлять электронные письма HTML:
package main
import (
"gopkg.in/gomail.v2"
)
func main() {
m := gomail.NewMessage()
m.SetHeader("From", "[email protected]")
m.SetHeader("To", "[email protected]")
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)
}
}
Вы также можете добавить текстовую версию тела в свой адрес электронной почты для клиента, который не поддерживает HTML, используя метод AddAlternative.
Ответ 3
Это добавление к ответу @GreyHands:
У меня возникла проблема, когда даже после установки MIME/Content Type теги html отображались как обычный текст.
Оказывается, я импортировал html/template
, и экранирование привело к тому, что html появился как обычный текст. Вместо импорта text/template
исправлена проблема.