go语言按模板发邮件
时间: 2024-08-13 11:03:44 浏览: 44
templates:捆绑模板
在Go语言中,你可以使用`net/smtp`包来发送电子邮件,并配合`text/template`包来创建动态邮件模板。以下是一个简单的步骤来实现这个功能:
1. **导入所需库**:
首先需要导入`net/smtp`和`text/template`库,它们分别用于SMTP邮件发送和模板处理。
```go
import (
"net/smtp"
"text/template"
)
```
2. **设置模板**:
创建一个`template.Template`实例,可以包含收件人、主题和其他内容变量。
```go
tpl := template.Must(template.New("email").Parse(`
To: {{ .To }}
Subject: {{ .Subject }}
{{ .Body }}
`)
```
这里的`.To`, `.Subject`, `.Body`是模板中的占位符,会被实际值替换。
3. **准备数据**:
准备一个结构体,包含发件人地址、收件人列表、邮件主题以及邮件正文。
```go
type Email struct {
From string
To []string
Subject string
Body string
}
```
4. **填充模板并生成HTML字符串**:
使用模板将数据渲染到邮件内容中。
```go
data := Email{
From: "your-email@example.com",
To: []string{"recipient1@example.com", "recipient2@example.com"},
Subject: "Test Email",
Body: "Hello, this is a test email using Go.",
}
htmlContent, err := tpl.ExecuteTemplate(bytes.NewBufferString(""), "email", data)
if err != nil {
// Handle error
}
```
5. **发送邮件**:
使用`smtp.SendMail()`函数发送邮件,这里需要SMTP服务器地址、用户名、密码。
```go
msg := []byte(htmlContent.String())
auth := smtp.PlainAuth("", "your-smtp-username", "your-smtp-password", "smtp.example.com")
err = smtp.SendMail("smtp.example.com:587", auth, data.From, data.To, msg)
if err != nil {
// Handle error
}
```
6. **错误处理**:
别忘了检查可能出现的错误,并适当地处理它们。
```go
if err != nil {
log.Fatal(err)
return
}
```
阅读全文