diff options
Diffstat (limited to 'smtp.go')
-rw-r--r-- | smtp.go | 24 |
1 files changed, 13 insertions, 11 deletions
@@ -34,17 +34,17 @@ func (s *Server) connectSMTP() (*smtp.Client, error) { } type OutgoingMessage struct { - from string - to []string - subject string - text string + From string + To []string + Subject string + Text string } func (msg *OutgoingMessage) WriteTo(w io.Writer) error { - from := []*mail.Address{{"", msg.from}} + from := []*mail.Address{{"", msg.From}} - to := make([]*mail.Address, len(msg.to)) - for i, addr := range msg.to { + to := make([]*mail.Address, len(msg.To)) + for i, addr := range msg.To { to[i] = &mail.Address{"", addr} } @@ -52,7 +52,9 @@ func (msg *OutgoingMessage) WriteTo(w io.Writer) error { h.SetDate(time.Now()) h.SetAddressList("From", from) h.SetAddressList("To", to) - h.SetText("Subject", msg.subject) + if msg.Subject != "" { + h.SetText("Subject", msg.Subject) + } mw, err := mail.CreateWriter(w, h) if err != nil { @@ -68,7 +70,7 @@ func (msg *OutgoingMessage) WriteTo(w io.Writer) error { } defer tw.Close() - if _, err := io.WriteString(tw, msg.text); err != nil { + if _, err := io.WriteString(tw, msg.Text); err != nil { return fmt.Errorf("failed to write text part: %v", err) } @@ -84,11 +86,11 @@ func (msg *OutgoingMessage) WriteTo(w io.Writer) error { } func sendMessage(c *smtp.Client, msg *OutgoingMessage) error { - if err := c.Mail(msg.from, nil); err != nil { + if err := c.Mail(msg.From, nil); err != nil { return fmt.Errorf("MAIL FROM failed: %v", err) } - for _, to := range msg.to { + for _, to := range msg.To { if err := c.Rcpt(to); err != nil { return fmt.Errorf("RCPT TO failed: %v", err) } |