Awesome
go-email-normalizer - email normalization for Go
This is Golang library for providing a canonical representation of email address. It allows
to prevent multiple signups. go-email-normalizer
contains some popular providers but you can easily append others.
Download
go get -u github.com/dimuska139/go-email-normalizer/v3
Usage
package main
import (
"fmt"
"strings"
normalizer "github.com/dimuska139/go-email-normalizer/v3"
)
type customRule struct {}
func (rule *customRule) ProcessUsername(username string) string {
return strings.Replace(username, "-", "", -1)
}
func (rule *customRule) ProcessDomain(domain string) string {
return domain
}
func main() {
n := normalizer.NewNormalizer()
fmt.Println(n.Normalize("vasya+pupkin@gmail.com")) // vasya@gmail.com
fmt.Println(n.Normalize("t.e-St+vasya@gmail.com")) // te-st@gmail.com
fmt.Println(n.Normalize("t+.-est@yahoo.com")) // t+.est@yahoo.com
fmt.Println(n.Normalize("t.e-St+@googlemail.com")) // te-st@gmail.com
fmt.Println(n.Normalize("t.e-St+@google.com")) // te-st@gmail.com
n.AddRule("customrules.com", &customRule{})
fmt.Println(n.Normalize(" tE-S-t@CustomRules.com.")) // tESt@customrules.com
}
Supported providers
- Apple
- Fastmail
- Microsoft
- Protonmail
- Rackspace
- Rambler
- Yahoo
- Yandex
- Zoho
Also you can integrate other rules using AddRule
function (see an example above)