发送smtp电子邮件给多个接收者

时间:2017-10-18 08:13:46

标签: go

我正在使用this发送smtp。它适用于一个接收器,但我想有多个接收器。我尝试过以下方法:

func sendemail(body string) {  
    from := "smtpemail" 
    pass := "pass"
    to := "a@gmail.com,b@gmail.com"
    ....
}

我也尝试过:

to := "\"a@gmail.com\",\"b@gmail.com\""

to := []string{"a@gmail.com","b@gmail.com"}

它们都不起作用。抱歉,这很简单,我刚开始使用golang

1 个答案:

答案 0 :(得分:4)

来自net/smtp文档:

  

msg参数应该是带有标头的RFC 822样式的电子邮件,   一个空白行,然后是消息正文。应该是msg的行   CRLF终止。 msg标头通常应包含诸如的字段   "来自"," To"," Subject"和" Cc"。

RFC 822要求To:标头值为逗号分隔列表。因此,虽然to变量应该保持为[]string并且作为smtp.SendMail参数传递给to,但邮件标题(在邮件中)应该以逗号分隔名单。请尝试以下操作:

func send(body string) {
    // ...
    to := []string{"foo@mailinator.com", "bar@mailinator.com"}
    toHeader := strings.Join(to, ",")

    msg := "From: " + from + "\n" +
        "To: " + toHeader + "\n" + // use toHeader
        "Subject: Hello there\n\n" +
        body

    err := smtp.SendMail("smtp.gmail.com:587",
        smtp.PlainAuth("", from, pass, "smtp.gmail.com"),
        from, to, []byte(msg))

    // ...
}