// Create an array of messages with the specified body. func (e *Email) newMessages(s *queue.Storage, from, body string) ([]*queue.Message, error) { addresses := append(append(e.To, e.Cc...), e.Bcc...) m, err := GroupAddressesByHost(addresses) if err != nil { return nil, err } messages := make([]*queue.Message, 0, 1) for h, to := range m { msg := &queue.Message{ Host: h, From: from, To: to, } if err := s.SaveMessage(msg, body); err != nil { return nil, err } messages = append(messages, msg) } return messages, nil }