...

Package mail

import "net/mail"
概览
索引

概览 ▾

mail 包实现了解析邮件消息的功能.

大多数情况下,这个包遵循 RFC 5322 定义的格式。 需要注意的:

* 过时的地址格式将不能被解析, 包括嵌入路由信息的地址格式。
* 组地址不能被解析。
* 全范围的空格(CFWS 语法元素)不支持,比如使用换行分隔地址。

变量

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

func ParseAddressList

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

ParseAddressList解析给的一列地址字符串

type Address

type Address struct {
    Name    string // Proper name; may be empty.
    Address string // user@domain
}

Address代表单个的邮件地址。 一个地址例如"Barry Gibbs <bg@example.com>"代表一个地址 {Name: "Barry Gibbs", Address: "bg@example.com"}。

func ParseAddress

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

解析一个单独的RFC 5322地址,例如 “Barry Gibbs <bg@example.com>”

func (*Address) String

func (a *Address) String() string

String格式化一个可视的RFC 5322地址。 如果地址名字包含非ASCII字符串,名字就会按照RFC 2047来解析。

type Header map[string][]string

Header代表邮件header中的key-value值对。

func (Header) AddressList

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

AddressList将命名后的头部区域作为一列地址列表解析出来。

func (Header) Date

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

Date解析Date头部区域。

func (Header) Get

func (h Header) Get(key string) string

Get获取根据key取出的第一个对应的值。 如果key没有对应的值,返回“”。

type Message

type Message struct {
    Header Header
    Body   io.Reader
}

Message代表解析后的邮件信息。

func ReadMessage

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

ReadMessage从r中读取一个邮件。 头部已经被解析了,而邮件体是可见的。