From 28cec6d6a23118ee6dcedcf31edca5727aa3d657 Mon Sep 17 00:00:00 2001 From: Jordan Wright Date: Wed, 25 Oct 2017 21:36:37 -0500 Subject: [PATCH] Fixing issue where original textproto.Error wasn't properly returned from Send() --- send.go | 5 ++--- send_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/send.go b/send.go index 4b32445..7092e56 100644 --- a/send.go +++ b/send.go @@ -35,12 +35,11 @@ func (f SendFunc) Send(from string, to []string, msg io.WriterTo) error { // Send sends emails using the given Sender. func Send(s Sender, msg ...*Message) error { - for i, m := range msg { + for _, m := range msg { if err := send(s, m); err != nil { - return fmt.Errorf("gomail: could not send email %d: %v", i+1, err) + return err } } - return nil } diff --git a/send_test.go b/send_test.go index 239b471..1fa5d4b 100644 --- a/send_test.go +++ b/send_test.go @@ -3,6 +3,7 @@ package gomail import ( "bytes" "io" + "net/textproto" "reflect" "testing" ) @@ -59,6 +60,30 @@ func TestSend(t *testing.T) { } } +func TestSendError(t *testing.T) { + expected := &textproto.Error{ + Code: 400, + Msg: "Error", + } + + s := &mockSendCloser{ + mockSender: func(from string, to []string, msg io.WriterTo) error { + return expected + }, + } + err := Send(s, getTestMessage()) + if err == nil { + t.Errorf("Expected error in Send(): %v", err) + } + if got, ok := err.(*textproto.Error); ok { + if !reflect.DeepEqual(got, expected) { + t.Errorf("Invalid error received in Send(). Expected %v Got %v", expected, got) + } + } else { + t.Errorf("Invalid error type in Send(): %v", err) + } +} + func getTestMessage() *Message { m := NewMessage() m.SetHeader("From", testFrom)