mail包实现了邮件的解析
几个常用的功能
- 将邮件字符串转换成邮件结构体
- 将邮件结构体转换成RFC 5322 规定的字符串形式
- 将一连串字符串邮件格式转换为邮件结构体数组
- 读取邮件获取邮件的header和body
- 读取邮件header的相关数据
下面我们看对应的方法实现
邮件地址结构
type Address struct {
Name string // 固有名,可以为空
Address string // user@domain
}
将邮件字符串转换成邮件结构体
func ParseAddress(address string) (*Address, error)
例如地址"Barry Gibbs bg@example.com"表示为Address{Name: "Barry Gibbs", Address: "bg@example.com"}
将邮件结构体转换成RFC 5322 规定的字符串形式
func (a *Address) String() string
将a代表的地址表示为合法的RFC 5322地址字符串。如果Name字段包含非ASCII字符将根据RFC 2047转义。
将一连串字符串邮件格式转换为邮件结构体数组
func ParseAddressList(list string) ([]*Address, error)
函数将list作为一串邮箱地址并解析返回
读取邮件获取邮件的header和body
type Message struct {
Header Header
Body io.Reader
}
Message代表一个解析后的邮件。
func ReadMessage(r io.Reader) (msg *Message, err error)
从r读取一个邮件,会解析邮件头域,消息主体可以从r/msg.Body中读取。
Header代表邮件头域的多个键值对。
type Header map[string][]string
func (h Header) AddressList(key string) ([]*Address, error)
将键值key对应的值作为邮件地址列表解析并返回
func (h Header) Date() (time.Time, error)
获取邮件的时间
func (h Header) Get(key string) string
获取邮件对应的key值