normalizeAddrs parses and lowercases a list of email addresses. Returns an error if any address is unparseable.
(addrs []string)
| 335 | // normalizeAddrs parses and lowercases a list of email addresses. |
| 336 | // Returns an error if any address is unparseable. |
| 337 | func normalizeAddrs(addrs []string) ([]string, error) { |
| 338 | out := make([]string, 0, len(addrs)) |
| 339 | for _, a := range addrs { |
| 340 | a = strings.TrimSpace(a) |
| 341 | if a == "" { |
| 342 | continue |
| 343 | } |
| 344 | parsed, err := mail.ParseAddress(a) |
| 345 | if err != nil { |
| 346 | return nil, fmt.Errorf("%q: %w", a, err) |
| 347 | } |
| 348 | out = append(out, strings.ToLower(parsed.Address)) |
| 349 | } |
| 350 | return out, nil |
| 351 | } |
| 352 | |
| 353 | // removeAddrs removes any address in exclude from addrs (case-insensitive). |
| 354 | func removeAddrs(addrs []string, exclude []string) []string { |