我过去一直通过gomail.v2发送电子邮件的唯一方法是对一个循环中的每个电子邮件使用Send()函数。但是我需要显示其他已发送相同电子邮件的电子邮件地址。
for _, recipient := range os.Args[3:] { mail.SetAddressHeader("From", "my@mail.com", "My Name") mail.SetHeader("To", recipient) mail.SetHeader("Subject", os.Args[2]) mail.SetBody("text/html", os.Args[1]) if err := dialer.DialAndSend(mail); err != nil { log.Printf("Could not send email to %q: %v", recipient, err) panic(err) } }
我发现了类似的东西:
var emails bytes.Buffer mail.SetAddressHeader("From", "my@mail.com.br", "My Name") mail.SetHeader("Subject", os.Args[2]) mail.SetBody("text/html", os.Args[1]) for _, recipient := range os.Args[3:] { emails.WriteString(recipient + ",") } mail.SetHeader("To", emails.String()) if err := dialer.DialAndSend(mail); err != nil { log.Printf("Could not send email to %q: %v", buffer, err) panic(err) }
通过仅将电子邮件发送给字符串中的第一个收件人来工作。并且在电子邮件管理器(例如Gmail,Outlook或任何其他其他收件人地址)中显示但未发送。
我应该怎么做呢?
试试看吗?
recipients := os.Args[3:] addresses := make([]string, len(recipients)) for i, recipient := range recipients { addresses[i] = mail.FormatAddress(recipient, "") } mail.SetHeader("To", addresses...) if err := dialer.DialAndSend(mail); err != nil { log.Fatal(err) }