gpt4 book ai didi

Gomail.v2 - 来自 Slice 的多个收件人

转载 作者:IT王子 更新时间:2023-10-29 02:11:18 24 4
gpt4 key购买 nike

免责声明:我在这个帖子中看到了类似的问题: Golang multiple recipients with gomail.v2但无法让它发挥作用,并且还没有果汁在那里发表评论寻求帮助。该问题中的操作使用 os.Args[],而我想使用存储在配置文件中的 slice 。

我正在尝试使用很棒的 gomail.v2 包发送到包含在 slice ToMail 中的多个收件人列表,例如 e 结构 Email 通过我的方法 Mail

编译器在第 37 行报错:

./mailer.go:37: not enough arguments in call to m.SetAddressHeader
have (string, []string...)
want (string, string, string)

我如何正确地将 slice 中的每个收件人传递给 SetAddressHeader("To"... 方法,以便发送给 slice 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
}

最佳答案

package gomail

import "gopkg.in/gomail.v2"

func (*Message) SetAddressHeader

func (m *Message) SetAddressHeader(field, address, name string)

SetAddressHeader sets an address to the given header field.

func (*Message) SetHeader

func (m *Message) SetHeader(field string, value ...string)

SetHeader sets a value to the given header field.

您引用的示例和文档有多个地址:

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)

关于Gomail.v2 - 来自 Slice 的多个收件人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46356385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com