net/mail
包在 Go 语言中用于解析和创建电子邮件消息。这个包定义了两个主要的数据结构:Message
和 Address
。
Message
结构表示一个电子邮件消息,它包括消息头和消息体。Address
结构表示电子邮件地址。
以下是一个使用 net/mail
包创建和发送电子邮件的示例:
package main
import (
"fmt"
"net/mail"
"strings"
)
func main() {
// 创建邮件地址
fromAddress := "John Doe <john@example.com>"
toAddress := "Jane Doe <jane@example.com>"
// 解析邮件地址
parsedFromAddress, err := mail.ParseAddress(fromAddress)
if err != nil {
fmt.Println("Error parsing from address:", err)
return
}
parsedToAddress, err := mail.ParseAddress(toAddress)
if err != nil {
fmt.Println("Error parsing to address:", err)
return
}
// 创建邮件消息
message := &mail.Message{
Header: map[string][]string{
"From": {parsedFromAddress.String()},
"To": {parsedToAddress.String()},
"Subject": {"Hello, World!"},
},
Body: strings.NewReader("This is the email body"),
}
// 发送邮件(这里需要实现发送逻辑,通常使用smtp包)
err = SendMail(parsedFromAddress.Address, parsedToAddress.Address, message)
if err != nil {
fmt.Println("Error sending email:", err)
return
}
fmt.Println("Email sent successfully")
}
// SendMail 是一个示例函数,用于发送邮件,实际使用时需要实现
func SendMail(from string, to []string, msg *mail.Message) error {
// 实现发送逻辑,例如使用smtp.SendMail函数
return nil
}
在这个示例中,我们首先使用 mail.ParseAddress
函数来解析邮件地址。然后,我们创建了一个 mail.Message
结构,并填充了邮件的头部信息和正文。最后,我们调用了一个假设的 SendMail
函数来发送邮件。实际的邮件发送逻辑需要依赖于外部库,如 net/smtp
。
请注意,这个示例中的 SendMail
函数是一个占位符。在实际应用中,你需要实现这个函数来与你的邮件服务器进行交互。