Haftungsausschluss: Ich habe eine ähnliche Frage in diesem Thema gesehen: Golang multiple recipients with gomail.v2 aber kann nicht dazu kommen, zu arbeiten, und habe noch nicht den Saft zu kommentieren um Hilfe bitten. Das Op in dieser Frage verwendet os.Args[]
, während ich ein in einer Konfigurationsdatei gespeichertes Segment verwenden möchte.Gomail.v2 - Mehrere recipiens von Slice
Ich versuche, das ehrfürchtige gomail.v2 Paket zu verwenden, um eine Liste der mehr Empfänger e
von Email
Mail
über meine Methode struct in einer Scheibe ToMail
in Beispiel enthalten ist, zu senden.
Der Compiler beschwert sich in Zeile 37:
./mailer.go:37: not enough arguments in call to m.SetAddressHeader
have (string, []string...)
want (string, string, string)
Wie kann ich vor jedem Empfänger in meinem Stück zum SetAddressHeader("To"
passieren ... Methode, um ToMail
an alle Empfänger in der Scheibe zu schicken?
Was ich habe versucht:
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: "[email protected]",
FromFirstLast: "From User",
ToMail: []string{"[email protected]", "[email protected]"},
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
}
Ach du meine Güte, nahm ich 'SetHeader' war gerade von der API v1, und dass' SetAddressHeader' aktuell war. Nicht der Fall! 'SetHeader' hat für mich funktioniert, danke! – gpanda