Skip to content

Commit 8592022

Browse files
authored
use mail.ParseAddress to cover missing email validations (#1395)
## Fixes Or Enhances **Make sure that you've checked the boxes below before you submit PR:** - [x] Tests exist or have been written that cover this particular change. @go-playground/validator-maintainers --------- Co-authored-by: Benitah <[email protected]>
1 parent 271abb3 commit 8592022

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

baked_in.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"fmt"
1010
"io/fs"
1111
"net"
12+
"net/mail"
1213
"net/url"
1314
"os"
1415
"reflect"
@@ -1693,6 +1694,10 @@ func isE164(fl FieldLevel) bool {
16931694

16941695
// isEmail is the validation function for validating if the current field's value is a valid email address.
16951696
func isEmail(fl FieldLevel) bool {
1697+
_, err := mail.ParseAddress(fl.Field().String())
1698+
if err != nil {
1699+
return false
1700+
}
16961701
return emailRegex().MatchString(fl.Field().String())
16971702
}
16981703

validator_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8725,6 +8725,20 @@ func TestEmail(t *testing.T) {
87258725
NotEqual(t, errs, nil)
87268726
AssertError(t, errs, "", "", "", "", "email")
87278727

8728+
8729+
errs = validate.Var(s, "email")
8730+
NotEqual(t, errs, nil)
8731+
AssertError(t, errs, "", "", "", "", "email")
8732+
8733+
8734+
errs = validate.Var(s, "email")
8735+
NotEqual(t, errs, nil)
8736+
AssertError(t, errs, "", "", "", "", "email")
8737+
8738+
s = "Foo Bar <[email protected]>"
8739+
errs = validate.Var(s, "email")
8740+
NotEqual(t, errs, nil)
8741+
87288742
s = ""
87298743
errs = validate.Var(s, "email")
87308744
NotEqual(t, errs, nil)

0 commit comments

Comments
 (0)