Как отправить электронное письмо с помощью Go с телом в формате HTML? - PullRequest
25 голосов
/ 31 марта 2012

Это кажется очень распространенной потребностью, но я не нашел хороших гидов, когда искал это.

Ответы [ 3 ]

51 голосов
/ 31 марта 2012

Предполагая, что вы используете пакет 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)

Надеюсь, это поможет =)

15 голосов
/ 26 июня 2014

Я автор 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)
    }
}

Вы также можете добавить в текст сообщения электронной почты версию тела для клиента, который не поддерживает HTML, с помощью метода AddAlternative .

1 голос
/ 18 ноября 2015

Это дополнение к ответу @GreyHands:

У меня возникла проблема, когда даже после установки MIME / Content Type мои HTML-теги отображались в виде обычного текста .

Оказывается, я импортировал html/template, и в результате экранирования HTML отображался в виде обычного текста. Импорт text/template вместо этого исправил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...