dongwo5686
2017-10-18 08:13
浏览 1.1k
已采纳

发送SMTP电子邮件给多个收件人

I am using this to send smtp. It works for one receiver but I'd like to have multiple receivers. I have tried the following:

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

I have also tried:

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

and:

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

None of them work. Sorry it is so simple, I just begin to work with golang.

图片转代码服务由CSDN问答提供 功能建议

我正在使用以发送 smtp 。 它适用于一个接收器,但我想拥有多个接收器。 我尝试了以下操作:

  func sendemail(body string){
从:=“ smtpemail” 
传递:=“传递” 
到:=“ a  @ gmail.com,b @ gmail.com“ 
 .... 
} 
   
 
 

我也尝试过:

 至:=“ \” a@gmail.com \“,\” b@gmail.com \“” 
   
 
 

and:< / p>

 至:= [] string {“ a@gmail.com”,“ b@gmail.com”} 
   
 
  

它们都不起作用。 抱歉,它是如此简单,我只是开始使用 golang

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dpy87530 2017-10-18 08:53
    已采纳

    From the net/smtp docs:

    The msg parameter should be an RFC 822-style email with headers first, a blank line, and then the message body. The lines of msg should be CRLF terminated. The msg headers should usually include fields such as "From", "To", "Subject", and "Cc".

    RFC 822 requires To: header value to be a comma separated list. So while the to variable should remain a []string and be passed to smtp.SendMail as its to parameter, the mail header (in the message) should have it as a comma separated list. Try below to see if it works:

    func send(body string) {
        // ...
        to := []string{"foo@mailinator.com", "bar@mailinator.com"}
        toHeader := strings.Join(to, ",")
    
        msg := "From: " + from + "
    " +
            "To: " + toHeader + "
    " + // use toHeader
            "Subject: Hello there
    
    " +
            body
    
        err := smtp.SendMail("smtp.gmail.com:587",
            smtp.PlainAuth("", from, pass, "smtp.gmail.com"),
            from, to, []byte(msg))
    
        // ...
    }
    
    打赏 评论

相关推荐 更多相似问题