envelope.go
func (e *Envelope) AddressList(key string) ([]*mail.Address, error) {
	if e.header == nil {
		return nil, fmt.Errorf("No headers available")
	}
	if !AddressHeaders[strings.ToLower(key)] {
		return nil, fmt.Errorf("%s is not an address header", key)
	}

	str := decodeToUTF8Base64Header(e.header.Get(key))
	if str == "" {
		return nil, mail.ErrHeaderNotPresent
	}

	// These statements are handy for debugging ParseAddressList errors
	// fmt.Println("in:  ", m.header.Get(key))
	// fmt.Println("out: ", str)
	ret, err := mail.ParseAddressList(str)
	switch {
	case err == nil:
		// carry on
	case err.Error() == "mail: expected comma":
		ret, err = mail.ParseAddressList(ensureCommaDelimitedAddresses(str))
		if err != nil {
			return nil, err
		}
	default:
		return nil, err
	}
	return ret, nil
}
func (e *Envelope) AddressList(key string) ([]*mail.Address, error) {
	if e.header == nil {
		return nil, fmt.Errorf("No headers available")
	}
	if !AddressHeaders[strings.ToLower(key)] {
		return nil, fmt.Errorf("%s is not an address header", key)
	}

	str := decodeToUTF8Base64Header(e.header.Get(key))
	if str == "" {
		return nil, mail.ErrHeaderNotPresent
	}

	// These statements are handy for debugging ParseAddressList errors
	// fmt.Println("in:  ", m.header.Get(key))
	// fmt.Println("out: ", str)
	ret, err := mail.ParseAddressList(str)
	switch {
	case err == nil:
		// carry on
	case err.Error() == "mail: expected comma":
		ret, err = mail.ParseAddressList(ensureCommaDelimitedAddresses(str))
		if err != nil {
			return nil, err
		}
	default:
		return nil, err
	}
	return ret, nil
}
// AddressList returns a mail.Address slice with RFC 2047 encoded names converted to UTF-8