[bugfix] Change email Date header to use RFC2822

This commit is contained in:
tobi 2025-04-06 14:17:10 +02:00
parent 650be1e8d0
commit 8405799d8a
2 changed files with 15 additions and 4 deletions
internal

View file

@ -31,6 +31,7 @@ import (
"github.com/google/uuid"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/util"
)
func (s *sender) sendTemplate(template string, subject string, data any, toAddresses ...string) error {
@ -105,7 +106,7 @@ func assembleMessage(mailSubject string, mailBody string, mailFrom string, msgID
// msg headers.'
msg.WriteString("To: Undisclosed Recipients:;" + CRLF)
}
msg.WriteString("Date: " + time.Now().Format(time.RFC822Z) + CRLF)
msg.WriteString("Date: " + util.FormatRFC2822(time.Now()) + CRLF)
msg.WriteString("From: " + mailFrom + CRLF)
msg.WriteString("Message-ID: <" + uuid.New().String() + "@" + msgIDHost + ">" + CRLF)
msg.WriteString("Subject: " + mailSubject + CRLF)

View file

@ -19,9 +19,11 @@ package util
import "time"
// ISO8601 is a formatter for serializing times that forces ISO8601 behavior.
const ISO8601 = "2006-01-02T15:04:05.000Z"
const ISO8601Date = "2006-01-02"
const (
ISO8601 = "2006-01-02T15:04:05.000Z"
ISO8601Date = "2006-01-02"
RFC2822 = "Mon, 02 Jan 2006 15:04:05 -0700"
)
// FormatISO8601 converts the given time to UTC and then formats it
// using the ISO8601 const, which the Mastodon API is able to understand.
@ -39,3 +41,11 @@ func FormatISO8601Date(t time.Time) string {
func ParseISO8601(in string) (time.Time, error) {
return time.Parse(ISO8601, in)
}
// FormatRFC2822 converts the given time to local and then formats it using
// the RFC2822 const, which conforms with email Date header requirements.
//
// See: https://www.rfc-editor.org/rfc/rfc2822#section-3.3
func FormatRFC2822(t time.Time) string {
return t.Local().Format(RFC2822)
}