net/mail

2018-12-25  本文已影响2人  酷走天涯

mail包实现了邮件的解析

RFC 5322

几个常用的功能

下面我们看对应的方法实现

邮件地址结构

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值

上一篇下一篇

猜你喜欢

热点阅读