Flip title and message if message is empty

This commit is contained in:
Philipp Heckel 2021-12-28 01:41:00 +01:00
parent 113053a9e3
commit 04719f8dee
2 changed files with 38 additions and 1 deletions

View file

@ -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 {
} }
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
} }

View file

@ -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>