diff --git a/utils/utils.go b/utils/utils.go index 526025d0dc8fb9c99ea18538ed963422039fed04..296f43419957df0635a8cd100216fbf6a8e13bdc 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