feat(PROJ-26,PROJ-38): IMAP LDAP-Auth + Mail-Threading

This commit is contained in:
sysops
2026-04-05 20:17:41 +02:00
parent 956b5b6d5f
commit b252172cc7
11 changed files with 382 additions and 15 deletions
+17
View File
@@ -28,6 +28,8 @@ type ParsedMail struct {
CC []string
Subject string
MessageID string
InReplyTo string // In-Reply-To header (single message-id, no angle brackets)
References []string // References header (list of message-ids, no angle brackets)
TextBody string
HTMLBody string
Date time.Time
@@ -81,6 +83,21 @@ func Parse(raw []byte) (*ParsedMail, error) {
msgID := msg.Header.Get("Message-Id")
pm.MessageID = strings.Trim(msgID, "<>")
// In-Reply-To - strip angle brackets
if irt := msg.Header.Get("In-Reply-To"); irt != "" {
pm.InReplyTo = strings.Trim(strings.TrimSpace(irt), "<>")
}
// References - space-separated list of message-ids
if refs := msg.Header.Get("References"); refs != "" {
for _, r := range strings.Fields(refs) {
r = strings.Trim(r, "<>")
if r != "" {
pm.References = append(pm.References, r)
}
}
}
// Date — try go-message parser first, then fallback formats, then zero
if d, err := msg.Header.Date(); err == nil {
pm.Date = d