25 lines
505 B
Go
25 lines
505 B
Go
package validator
|
|
|
|
import (
|
|
"net"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
var emailRegex = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
|
|
|
|
func IsEmailValid(e string) bool {
|
|
if len(e) < 3 && len(e) > 254 {
|
|
return false
|
|
}
|
|
if !emailRegex.MatchString(e) {
|
|
return false
|
|
}
|
|
parts := strings.Split(e, "@")
|
|
mx, err := net.LookupMX(parts[1])
|
|
if err != nil || len(mx) == 0 {
|
|
return false
|
|
}
|
|
return true
|
|
}
|