猿问

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

我有以下一段代码,我试图在其中使用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")

,但出现错误


template: "/mnt/data/go/test/emails/template.html" is an incomplete or empty template

提到的路径是正确的。


慕斯709654
浏览 183回答 1
1回答

料青山看我应如是

我变了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")
随时随地看视频慕课网APP

相关分类

Go
我要回答