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



我有一段代码,在其中我试图使用gopkg.in/gomail.v2发送电子邮件。当电子邮件模板像这个一样放在项目的根目录中时,我完全可以发送电子邮件

./
main.go
template.html

// Info defines
type 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") 但得到错误

CCD_ 7中提到的路径是正确的。

我更改了

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")

相关内容

  • 没有找到相关文章

最新更新