Smail/backend/utils/address/address.go
smail b96cc4937d
Some checks are pending
Security Checks / security (push) Waiting to run
修复邮箱地址格式校验
2026-09-06 05:17:13 +08:00

31 lines
724 B
Go

package address
import (
"net/mail"
"strings"
)
// IsValidEmailAddress 检查是否是有效的邮箱地址
func IsValidEmailAddress(str string) bool {
parsed, err := mail.ParseAddress(str)
if err != nil || parsed.Address != str {
return false
}
separator := strings.LastIndexByte(str, '@')
if separator <= 0 || separator == len(str)-1 {
return false
}
localPart := str[:separator]
domain := str[separator+1:]
if strings.Contains(localPart, "..") || strings.HasPrefix(localPart, ".") || strings.HasSuffix(localPart, ".") {
return false
}
if strings.Contains(domain, "..") || strings.HasPrefix(domain, ".") || strings.HasSuffix(domain, ".") {
return false
}
return strings.Contains(domain, ".")
}