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

模板:是一个不完整或空的模板

模板:是一个不完整或空的模板

Go
慕斯709654 2022-05-23 17:06:03
我有以下一段代码,我试图在其中使用gopkg.in/gomail.v2. 当电子邮件模板像这样放在项目的根目录中时,我完全能够发送电子邮件./    main.go    template.html// Info definestype Info struct {    Age  int    Name string}func (i Info) sendMail() {    fp := filepath.Join("template.html")    t := template.New(fp)    var err error    t, err = t.ParseFiles(fp)    if err != nil {        log.Println(err)    }    var tpl bytes.Buffer    if err := t.Execute(&tpl, i); err != nil {        log.Println(err)    }    result := tpl.String()    // ... email sending logic}func main() {    info := &Info{        Name: "name 1",        Age:  20,    }    info.sendMail()}但是当我将模板目录emails/template.html更改为并将文件路径更改为时,fp := filepath.Join("emails", "template.html")我得到了错误t.Execute()template: "emails/template.html" is an incomplete or empty template我也尝试过 fp, _ := filepath.Abs("emails/template.html"),但出现错误template: "/mnt/data/go/test/emails/template.html" is an incomplete or empty template提到的路径是正确的。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

我变了


if err := t.Execute(&tpl, i); err != nil {

        log.Println(err)

    }




if err := t2.ExecuteTemplate(&tpl, "template.html", i); err != nil {

        log.Println(err)

    }


它奏效了


如果我想t.Execute(&tpl, i)改用,那么我必须在创建模板时将模板名称指定为文件名


t := template.New("template.html")


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

添加回答

举报

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