builder.go
func (p MailBuilder) Send(addr string, a smtp.Auth) error {
	buf := &bytes.Buffer{}
	root, err := p.Build()
	if err != nil {
		return err
	}
	err = root.Encode(buf)
	if err != nil {
		return err
	}
	recips := make([]string, 0, len(p.to)+len(p.cc)+len(p.bcc))
	for _, a := range p.to {
		recips = append(recips, a.Address)
	}
	for _, a := range p.cc {
		recips = append(recips, a.Address)
	}
	for _, a := range p.bcc {
		recips = append(recips, a.Address)
	}
	return smtp.SendMail(addr, a, p.from.Address, recips, buf.Bytes())
}
func (p MailBuilder) Send(addr string, a smtp.Auth) error {
	buf := &bytes.Buffer{}
	root, err := p.Build()
	if err != nil {
		return err
	}
	err = root.Encode(buf)
	if err != nil {
		return err
	}
	recips := make([]string, 0, len(p.to)+len(p.cc)+len(p.bcc))
	for _, a := range p.to {
		recips = append(recips, a.Address)
	}
	for _, a := range p.cc {
		recips = append(recips, a.Address)
	}
	for _, a := range p.bcc {
		recips = append(recips, a.Address)
	}
	return smtp.SendMail(addr, a, p.from.Address, recips, buf.Bytes())
}
// Send encodes the message and sends it via the SMTP server specified by addr.  Send uses
// net/smtp.SendMail, and accepts the same authentication parameters.