向多个收件人发送 smtp 电子邮件

PHA*_*PHA 6 go

我用这个来发送smtp. 它适用于一个接收器,但我想要多个接收器。我尝试了以下方法:

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

我也试过:

to := "\"a@gmail.com\",\"b@gmail.com\""
Run Code Online (Sandbox Code Playgroud)

和:

to := []string{"a@gmail.com","b@gmail.com"}
Run Code Online (Sandbox Code Playgroud)

他们都没有工作。对不起,它太简单了,我才开始使用golang.

abh*_*ink 8

net/smtp文档:

msg 参数应该是一个 RFC 822 样式的电子邮件,首先是标题,一个空行,然后是邮件正文。msg 的行应该以 CRLF 结尾。msg 标头通常应包含“From”、“To”、“Subject”和“Cc”等字段。

RFC 822要求To:标头值是逗号分隔的列表。因此,虽然to变量应保持为 a[]stringsmtp.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))

    // ...
}
Run Code Online (Sandbox Code Playgroud)