From b40025b63313ee190ba0b7c1319f9a1fe5902e3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franc=C3=A9=20Wilke?= <francewilke@gmail.com> Date: Tue, 28 May 2024 14:54:35 +0200 Subject: [PATCH] Cater for only parsing an email address and not doing the domain checks --- utils/utils.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/utils/utils.go b/utils/utils.go index 526025d..296f434 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -59,7 +59,7 @@ func PointerToValue[V any](value *V) V { return *new(V) // zero value of V } -func ValidateEmailAddress(email string) (string, error) { +func ValidateEmailAddress(email string, options ...map[string]string) (string, error) { // To lower cleanedEmail := strings.ToLower(strings.TrimSpace(email)) @@ -79,11 +79,26 @@ func ValidateEmailAddress(email string) (string, error) { return "", errors.Error("email address is empty") } + doOnlyParse := false + if options != nil { + if value, exists := options[0]["do_only_parse"]; exists && value == "true" { + doOnlyParse = true + } + } + // Parse and verify the email verifier := emailverifier.NewVerifier() - result, err := verifier.Verify(cleanedEmail) - if err != nil || !result.Syntax.Valid { - return cleanedEmail, errors.Wrap(err, "could not parse email address") + + if doOnlyParse { + result := verifier.ParseAddress(cleanedEmail) + if !result.Valid { + return cleanedEmail, errors.Error("could not parse email address") + } + } else { + result, err := verifier.Verify(cleanedEmail) + if err != nil || !result.Syntax.Valid { + return cleanedEmail, errors.Wrap(err, "could not parse email address") + } } return cleanedEmail, nil -- GitLab