Files
patrickandClaude Sonnet 5.5 0501118bcd feat(PROJ-92,PROJ-93): Weiterleitung in Liste/Detail anzeigen, imap-verify Vollständigkeitsprüfung
PROJ-92: forwarded_via in Suchtreffern, Detail und Threads; Badge im Portal.
PROJ-93: archivmail imap-verify gleicht Message-IDs im IMAP-Postfach mit dem
Archiv ab (strikt lesend, nur Zahlen und Ordner:UID).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 14:20:34 +01:00

37 lines
767 B
Go

package mailparser
import (
"net/mail"
"strings"
)
// Display only: Return-Path is sender-controlled and must never drive access decisions.
func ForwardedVia(pm *ParsedMail) string {
if pm == nil {
return ""
}
rp := normalizeAddress(pm.ReturnPath)
if rp == "" || rp == normalizeAddress(pm.From) {
return ""
}
for _, list := range [][]string{pm.To, pm.CC, pm.BCC, pm.DeliveryAddresses} {
for _, a := range list {
if normalizeAddress(a) == rp {
return rp
}
}
}
return ""
}
func normalizeAddress(s string) string {
s = strings.TrimSpace(s)
if s == "" || s == "<>" {
return ""
}
if a, err := mail.ParseAddress(s); err == nil {
return strings.ToLower(strings.TrimSpace(a.Address))
}
return strings.ToLower(strings.Trim(s, "<>"))
}