Smail/backend/utils/validation/sender.go
smail fd475cd88d
Some checks are pending
Security Checks / security (push) Waiting to run
保存角色权限分层改造续审现场
2026-09-09 20:27:50 +08:00

38 lines
848 B
Go

package validation
import (
"net/mail"
"strings"
)
func IsAuthorizedSender(address, account string, allowLocalAlias bool, domains []string) bool {
address = strings.TrimSpace(address)
parsed, err := mail.ParseAddress(address)
if err != nil || parsed.Address != address {
return false
}
at := strings.LastIndexByte(address, '@')
if at <= 0 || at == len(address)-1 || strings.Contains(address[:at], "@") {
return false
}
domain, err := NormalizeDomain(address[at+1:])
if err != nil {
return false
}
configured := false
for _, candidate := range domains {
normalized, normalizeErr := NormalizeDomain(candidate)
if normalizeErr == nil && domain == normalized {
configured = true
break
}
}
if !configured {
return false
}
return allowLocalAlias || strings.EqualFold(address[:at], strings.TrimSpace(account))
}