我有以下一段代码,我试图在其中使用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")
- 1 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消