Skip to content

Commit

Permalink
Flip title and message if message is empty
Browse files Browse the repository at this point in the history
  • Loading branch information
Philipp Heckel committed Dec 28, 2021
1 parent 113053a commit 04719f8
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
7 changes: 6 additions & 1 deletion server/smtp_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,12 @@ func (s *smtpSession) Data(r io.Reader) error {
if err != nil {
return err
}
body = strings.TrimSpace(body)
if len(body) > conf.MessageLimit {
body = body[:conf.MessageLimit]
}
m := newDefaultMessage(s.topic, body)
subject := msg.Header.Get("Subject")
subject := strings.TrimSpace(msg.Header.Get("Subject"))
if subject != "" {
dec := mime.WordDecoder{}
subject, err := dec.DecodeHeader(subject)
Expand All @@ -123,6 +124,10 @@ func (s *smtpSession) Data(r io.Reader) error {
}
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 {
return err
}
Expand Down
32 changes: 32 additions & 0 deletions server/smtp_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,38 @@ Content-Type: text/html; charset="UTF-8"
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: <[email protected]>
Subject: This email has a subject but no body
From: Phil <[email protected]>
To: [email protected]
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("[email protected]", smtp.MailOptions{}))
require.Nil(t, session.Rcpt("[email protected]"))
require.Nil(t, session.Data(strings.NewReader(email)))
}

func TestSmtpBackend_Plaintext(t *testing.T) {
email := `Date: Tue, 28 Dec 2021 00:30:10 +0100
Message-ID: <CAAvm79YP0C=Rt1N=KWmSUBB87KK2rRChmdzKqF1vCwMEUiVzLQ@mail.gmail.com>
Expand Down

0 comments on commit 04719f8

Please sign in to comment.