Golang SMTP отправка пустого письма - PullRequest
0 голосов
/ 01 июня 2018

Почему, когда я пытаюсь отправить электронное письмо, я получаю пустое письмо?

    func contactHandler(w http.ResponseWriter, r *http.Request) {
        if r.Method == "GET" {
            t, _ := template.ParseFiles("template/static/contact.html")
            t.Execute(w, nil)
        } else if r.Method == "POST" {
            r.ParseForm()
            msg := "Name: " + r.Form["name"][0] + ", Email: " + r.Form["email"][0] + ", Message: " + r.Form["message"][0]
            println("out ", msg)
            smtp.SendMail("smtp.gmail.com:587", smtp.PlainAuth("", "login", "password", "smtp.gmail.com"), "sender@mail.com", []string{"me@mail.com"}, []byte(msg))
            http.Redirect(w, r, "/", 301)
        }
    }

Но если я изменяю []byte(msg) на []byte("TEST"), я получаю письмо со словом ТЕСТ

1 Ответ

0 голосов
/ 02 июня 2018

Вы не можете составить формат заголовка письма, как вам угодно.Заголовок электронного письма должен соответствовать определенному формату, определенному в RFC2822.Попробуйте создать переменную «msg», используя этот формат:

from := fmt.Sprintf("From: <%s>\r\n", "sender@gmail.com")
to := fmt.Sprintf("To: <%s>\r\n", "recipient@gmail.com")
subject := "Subject: This is the subject\r\n"
body := "This is the email body.\r\nBye\r\n"

msg := from+to+subject+"\r\n"+body

Подробности см. В https://tools.ietf.org/html/rfc2822

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