Instead of multiple "Mailer.Send" methods, it may be an easier API to provide functions that make Messages, and a single method to send the message (or list of messages). 

For example

```go
func Render(templatePath string, args interface{}, msg *Message) *Message
func Send(msg ...*Message) error
```

allows

```go
mail.Send(&mail.Message{ 
  To: []string{"robfig@gmail.com"},
  Plaintext: "Hello" ,
  Html: "<h1>Hello</h1>", 
  From: robfig,
}) 
```
as well as

```go
mail.Send(mail.Render("email/Message", renderArgs, &Message{
  To: []string{"robfig@gmail.com"},
  From: robfig,
}))
```
I don't know.. maybe that makes it more complicated.  I guess one benefit is that it provides a solution for dealing with the multiple optional parameter issue that I brought up in another comment, while still allowing defining parameters using a type literal.  What do you think?