net/mail

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值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值