Gomail.v2 - несколько получателей из Slice
Отказ от ответственности: я видел похожий вопрос в этой теме: Golang несколько получателей с gomail.v2, но не может заставить это работать, и еще не хватает сока, чтобы комментировать там с просьбой о помощи. ОП в этом вопросе использует os.Args[]
в то время как я хочу использовать фрагмент, хранящийся в файле конфигурации.
Я пытаюсь использовать пакет gomail.v2 для отправки списка нескольких получателей, содержащихся в срезе. ToMail
в случае e
структуры Email
через мой метод Mail
,
Компилятор жалуется на строку 37:
./mailer.go:37: not enough arguments in call to m.SetAddressHeader
have (string, []string...)
want (string, string, string)
Как правильно передать каждого получателя в моем срезе SetAddressHeader("To"
... метод для отправки всем получателям в срез ToMail
?
Что я пробовал:
package main
import (
"fmt"
"gopkg.in/gomail.v2"
)
type Email struct {
FromMail, FromFirstLast, Password, Subject, Body, Server string
ToMail []string
Port int
}
func main() {
e := Email{FromMail: "fromuser@foo.com",
FromFirstLast: "From User",
ToMail: []string{"user1@foo.com", "user2@foo.com"},
Password: "passpasspass",
Subject: "Test",
Body:"TEST BODY",
Server: "foo.foomail.com",
Port: 587,}
err := e.Mail()
if err != nil {
fmt.Println(err)
}
}
func (e Email)Mail() (error) {
m := gomail.NewMessage()
m.SetAddressHeader("From", e.FromMail, e.FromFirstLast)
addresses := make([]string, len(e.ToMail))
for i, _ := range addresses{
addresses[i] = m.FormatAddress(e.ToMail[i], "")
}
m.SetAddressHeader("To", addresses...)
m.SetHeader("Subject", e.Subject)
m.SetBody("text/plain", e.Body)
d := gomail.NewPlainDialer(e.Server, e.Port, e.FromMail, e.Password)
if err := d.DialAndSend(m); err != nil {
return err
}
return nil
}
1 ответ
import "gopkg.in/gomail.v2"
func (* Сообщение) SetAddressHeader
func (m *Message) SetAddressHeader(field, address, name string)
SetAddressHeader устанавливает адрес для данного поля заголовка.
func (m *Message) SetHeader(field string, value ...string)
SetHeader устанавливает значение для данного поля заголовка.
Пример, на который вы ссылались, и документация для нескольких адресов:
addresses := make([]string, len(e.ToMail))
for i := range addresses {
addresses[i] = m.FormatAddress(e.ToMail[i], "")
}
m.SetHeader("To", addresses...)
Но ты пишешь, используя один адрес (с неявным FormatAddress
) форма:
m.SetAddressHeader("To", addresses...)
Ошибка:
not enough arguments in call to m.SetAddressHeader
have (string, []string...)
want (string, string, string)