Go 语言

Go 语言教程 Go 语言环境安装 Go 语言结构 Go 语言基础语法 Go 语言数据类型 Go 语言变量 Go 语言常量 Go 语言运算符 Go 语言条件语句 Go 语言 if 语句 Go 语言 if...else 语句 Go 语言 if 语句嵌套 Go 语言 switch 语句 Go 语言 select 语句 Go 语言循环语句 Go 语言 for 循环 Go 语言循环嵌套 Go 语言 break 语句 Go 语言 continue 语句 Go 语言 goto 语句 Go 语言函数 Go 语言函数值传递值 Go 语言函数引用传递值 Go 语言函数作为值 Go 语言函数闭包 Go 语言函数方法 Go 语言变量作用域 Go 语言数组 Go 语言多维数组 Go 语言向函数传递数组 Go 语言指针 Go 语言指针数组 Go 语言指向指针的指针 Go 语言指针作为函数参数 Go 语言结构体 Go 语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言递归函数 Go 语言类型转换 Go 语言接口 Go 错误处理 Go 语言开发工具Go 语言标准库

Go 语言标准库


package mail

import "net/mail"

mail包实现了邮件的解析。

本包大部分都遵守RFC 5322规定的语法,值得注意的区别是:

* 旧格式地址和嵌入远端信息的地址不会被解析
* 组地址不会被解析
* 不支持全部的间隔符(CFWS语法元素),如分属两行的地址

Go语言标准库 >>


  • Variables
  • type Address
  • func ParseAddressList(list string) ([]*Address, error)
  • type Header
  • type Message
  • Variables

    var ErrHeaderNotPresent = errors.New("mail: header not in message")

    type Address

    type Address struct {
        Name    string // 固有名,可以为空
        Address string // user@domain
    }

    Address类型表示一个邮箱地址。

    例如地址"Barry Gibbs <[email protected]>"表示为Address{Name: "Barry Gibbs", Address: "[email protected]"}

    func ParseAddress

    func ParseAddress(address string) (*Address, error)

    解析单个的RFC 5322地址,例如"Barry Gibbs <[email protected]>"。

    func (*Address) String

    func (a *Address) String() string

    将a代表的地址表示为合法的RFC 5322地址字符串。如果Name字段包含非ASCII字符将根据RFC 2047转义。

    func ParseAddressList

    func ParseAddressList(list string) ([]*Address, error)

    函数将list作为一串邮箱地址并解析返回。

    type Header map[string][]string

    Header代表邮件头域的多个键值对。

    func (Header) AddressList

    func (h Header) AddressList(key string) ([]*Address, error)

    将键key对应的值(字符串)作为邮箱地址列表解析并返回。

    func (Header) Date

    func (h Header) Date() (time.Time, error)

    解析头域Date项的值并返回。

    func (Header) Get

    func (h Header) Get(key string) string

    返回键key对应的第一个值,如果没有对应值,将返回空字符串。

    type Message

    type Message struct {
        Header Header
        Body   io.Reader
    }

    Message代表一个解析后的邮件。

    func ReadMessage

    func ReadMessage(r io.Reader) (msg *Message, err error)

    从r读取一个邮件,会解析邮件头域,消息主体可以从r/msg.Body中读取。