From 645f1f0957780ee8d9b4bb0964007f26e3fcbc27 Mon Sep 17 00:00:00 2001 From: Alexander Shogenov Date: Sat, 5 Jun 2021 15:33:46 +0300 Subject: [PATCH 1/2] Add .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file From 3f0e8054b9ae2662015019bc7301ed42f913a89b Mon Sep 17 00:00:00 2001 From: Alexander Shogenov Date: Sat, 5 Jun 2021 15:35:32 +0300 Subject: [PATCH 2/2] Implement setting Content-Type header --- sendmail.go | 4 +++- sendmail_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/sendmail.go b/sendmail.go index 5f814ea..cfa78b4 100644 --- a/sendmail.go +++ b/sendmail.go @@ -45,7 +45,9 @@ func (m *Mail) Send() error { if m.Header == nil { m.Header = make(http.Header) } - m.Header.Set("Content-Type", "text/plain; charset=UTF-8") + if m.Header.Get("Content-Type") == "" { + m.Header.Set("Content-Type", "text/plain; charset=UTF-8") + } m.Header.Set("Subject", mime.QEncoding.Encode("utf-8", m.Subject)) m.Header.Set("From", m.From.String()) to := make([]string, len(m.To)) diff --git a/sendmail_test.go b/sendmail_test.go index f4efa54..701af15 100644 --- a/sendmail_test.go +++ b/sendmail_test.go @@ -70,3 +70,30 @@ func TestToError(t *testing.T) { t.Errorf("Expected an error because of missing `To` addresses") } } + +func TestSetsContentTypeHeader(t *testing.T) { + contentTypeHeader := "Content-Type" + contentTypeValue := `text/html; charset="UTF-8"` + + sm := Mail{ + Subject: "Test sets header", + From: maddr("Alexander", "me@"), + To: []*mail.Address{maddr("Info", "info@")}, + Header: map[string][]string{}, + } + + sm.Header.Set(contentTypeHeader, contentTypeValue) + + io.WriteString(&sm.Text, ":)\r\n") + + + if err := sm.Send(); err != nil { + t.Errorf("%v", err) + } + + setHeaderValue := sm.Header.Get(contentTypeHeader) + + if setHeaderValue != contentTypeValue { + t.Errorf("Exepected %s == %s, but it equals %s", contentTypeHeader, contentTypeValue, setHeaderValue) + } +}