net/mail

作者: 酷走天涯 | 来源:发表于2018-12-25 09:27 被阅读2次

    mail包实现了邮件的解析

    RFC 5322

    几个常用的功能

    • 将邮件字符串转换成邮件结构体
    • 将邮件结构体转换成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值

    相关文章

      网友评论

          本文标题:net/mail

          本文链接:https://www.haomeiwen.com/subject/yvypoftx.html