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

我想从数据库获取电子邮件数据以发送包含该数据的电子邮件。


此代码来自控制器/通知控制器.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, "")

    }


杨魅力
浏览 78回答 1
1回答

慕容3067478

编写一个循环,将通知中的电子邮件地址作为字符串切片提取:addresses := make([]string, len(notifs))for i, notif := range notifs {    addresses[i] = notif.Email}使用切片设置标题:mailer.SetHeader("To", addresses...)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go