为了账号安全,请及时绑定邮箱和手机立即绑定

不能使用通知(类型为 [] 实体的变量。Notif) 作为数组或切片文本中的字符串值

不能使用通知(类型为 [] 实体的变量。Notif) 作为数组或切片文本中的字符串值

Go
杨魅力 2022-10-04 19:23:29
我想从数据库获取电子邮件数据以发送包含该数据的电子邮件。此代码来自控制器/通知控制器.go:func (c *notifController) SendNotifEmail(context *gin.Context) {    email_to := context.Query("sEmailByDiv")    cc_to := context.Query("cc_to")    subject := context.Query("subject")    body := context.Query("body")    notifs := c.notifService.EmailByDiv(email_to)    to := []string{notifs}    mailer := gomail.NewMessage()    mailer.SetHeader("From", CONFIG_SENDER_NAME)    mailer.SetHeader("To", to)    mailer.SetHeader("Cc", cc_to)    mailer.SetHeader("Subject", subject)    mailer.SetBody("text/html", body)    // dialer := &gomail.Dialer{Host: CONFIG_SMTP_HOST, Port: CONFIG_SMTP_PORT}    dialer := gomail.NewDialer(        CONFIG_SMTP_HOST,        CONFIG_SMTP_PORT,        CONFIG_AUTH_EMAIL,        CONFIG_AUTH_PASSWORD,    )    err := dialer.DialAndSend(mailer)    if err != nil {        log.Fatal(err.Error())    }    log.Println("Mail sent!")}我在 中遇到错误:不能使用通知(类型为 [] 实体的变量。Noteif) 作为数组或切片文本中的字符串值,并且不能在 的参数中使用 to (类型为 []字符串的变量) 作为字符串值。mailer.SetHeader我添加了一个循环,如下所示:func (c *notifController) SendNotifEmail(context *gin.Context) {    email_to := context.Query("sEmailByDiv")    cc_to := context.Query("cc_to")    subject := context.Query("subject")    body := context.Query("body")    // file := context.Query("file")    notifs := c.notifService.EmailByDiv(email_to)    to := []string{notifs}    mailer := gomail.NewMessage()    addresses := make([]string, len(to))    for i, recipient := range to {        addresses[i] = mailer.FormatAddress(recipient, "")    }
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

编写一个循环,将通知中的电子邮件地址作为字符串切片提取:


addresses := make([]string, len(notifs))

for i, notif := range notifs {

    addresses[i] = notif.Email

}

使用切片设置标题:


mailer.SetHeader("To", addresses...)


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信