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 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) + } +}