Especially since Go has no method overloading, it is preferable to accept a single parameter of type *Message rather than the members of message.  This is important because when we support CC, BCC, Reply-To, we would have to add all of them to the function signature.  It is much better to take a struct where the caller can specify a literal that specifies only the parameters that they care about.