免責事項:このスレッドでも同様の質問がありました。 Golang multiple recipients with gomail.v2この機能は動作しません。その質問の操作はos.Args[]
を使用していますが、設定ファイルに格納されているスライスを使用したいのです。Gomail.v2 - Sliceの複数のレシピエント
私は私の方法Mail
を経由して、インスタンス構造体Email
のe
にスライスToMail
に含まれる複数の受信者のリストに送信するために素晴らしいgomail.v2パッケージを使用しようとしています。
コンパイラはライン37で文句を言う:
./mailer.go:37: not enough arguments in call to m.SetAddressHeader
have (string, []string...)
want (string, string, string)
スライスToMail
にすべての受信者に送信するようにどのように適切にSetAddressHeader("To"
...メソッドに私のスライス内の各受信者を渡すことができますか?
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
}
ああ良さ、私、私が想定し 'SetHeader'がSetAddressHeader'が最新だっただけで、V1のAPIから、と'ということでした。そうではありません! 'SetHeader'が私のために働いた、ありがとう! – gpanda