// Send an email using the given host and SMTP auth (optional), returns any // error thrown by smtp.SendMail. This function merges the To, Cc, and Bcc // fields and calls the smtp.SendMail function using the Email.Bytes() output as // the message. func Send(e *email.Email, addr, username, password string) error { // Merge the To, Cc, and Bcc fields to := make([]string, 0, len(e.To)+len(e.Cc)+len(e.Bcc)) to = append(append(append(to, e.To...), e.Cc...), e.Bcc...) // Check to make sure there is at least one recipient and one "From" address if e.From == "" || len(to) == 0 { return errors.New("Must specify at least one From address and one To address") } from, err := mail.ParseAddress(e.From) if err != nil { return err } raw, err := e.Bytes() if err != nil { return err } return SendMail(addr, username, password, from.Address, to, raw) }