Skip to content
Snippets Groups Projects
Commit 04719f8d authored by Philipp Heckel's avatar Philipp Heckel
Browse files

Flip title and message if message is empty

parent 113053a9
No related branches found
No related tags found
No related merge requests found
...@@ -110,11 +110,12 @@ func (s *smtpSession) Data(r io.Reader) error { ...@@ -110,11 +110,12 @@ func (s *smtpSession) Data(r io.Reader) error {
if err != nil { if err != nil {
return err return err
} }
body = strings.TrimSpace(body)
if len(body) > conf.MessageLimit { if len(body) > conf.MessageLimit {
body = body[:conf.MessageLimit] body = body[:conf.MessageLimit]
} }
m := newDefaultMessage(s.topic, body) m := newDefaultMessage(s.topic, body)
subject := msg.Header.Get("Subject") subject := strings.TrimSpace(msg.Header.Get("Subject"))
if subject != "" { if subject != "" {
dec := mime.WordDecoder{} dec := mime.WordDecoder{}
subject, err := dec.DecodeHeader(subject) subject, err := dec.DecodeHeader(subject)
...@@ -123,6 +124,10 @@ func (s *smtpSession) Data(r io.Reader) error { ...@@ -123,6 +124,10 @@ func (s *smtpSession) Data(r io.Reader) error {
} }
m.Title = subject m.Title = subject
} }
if m.Title != "" && m.Message == "" {
m.Message = m.Title // Flip them, this makes more sense
m.Title = ""
}
if err := s.backend.sub(m); err != nil { if err := s.backend.sub(m); err != nil {
return err return err
} }
......
...@@ -39,6 +39,38 @@ Content-Type: text/html; charset="UTF-8" ...@@ -39,6 +39,38 @@ Content-Type: text/html; charset="UTF-8"
require.Nil(t, session.Data(strings.NewReader(email))) require.Nil(t, session.Data(strings.NewReader(email)))
} }
func TestSmtpBackend_MultipartNoBody(t *testing.T) {
email := `MIME-Version: 1.0
Date: Tue, 28 Dec 2021 01:33:34 +0100
Message-ID: <CAAvm7ABCDsi9vsuu0WTRXzZQBC8dXrDOLT8iCWdqrsmg@mail.gmail.com>
Subject: This email has a subject but no body
From: Phil <phil@example.com>
To: ntfy-emailtest@ntfy.sh
Content-Type: multipart/alternative; boundary="000000000000bcf4a405d429f8d4"
--000000000000bcf4a405d429f8d4
Content-Type: text/plain; charset="UTF-8"
--000000000000bcf4a405d429f8d4
Content-Type: text/html; charset="UTF-8"
<div dir="ltr"><br></div>
--000000000000bcf4a405d429f8d4--`
_, backend := newTestBackend(t, func(m *message) error {
require.Equal(t, "emailtest", m.Topic)
require.Equal(t, "", m.Title) // We flipped message and body
require.Equal(t, "This email has a subject but no body", m.Message)
return nil
})
session, _ := backend.AnonymousLogin(nil)
require.Nil(t, session.Mail("phil@example.com", smtp.MailOptions{}))
require.Nil(t, session.Rcpt("ntfy-emailtest@ntfy.sh"))
require.Nil(t, session.Data(strings.NewReader(email)))
}
func TestSmtpBackend_Plaintext(t *testing.T) { func TestSmtpBackend_Plaintext(t *testing.T) {
email := `Date: Tue, 28 Dec 2021 00:30:10 +0100 email := `Date: Tue, 28 Dec 2021 00:30:10 +0100
Message-ID: <CAAvm79YP0C=Rt1N=KWmSUBB87KK2rRChmdzKqF1vCwMEUiVzLQ@mail.gmail.com> Message-ID: <CAAvm79YP0C=Rt1N=KWmSUBB87KK2rRChmdzKqF1vCwMEUiVzLQ@mail.gmail.com>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment