checkmail
Golang package for email validation.
- Format (simple regexp, see: https://www.w3.org/TR/html5/forms.html#valid-e-mail-address and https://davidcel.is/posts/stop-validating-email-addresses-with-regex/)
- Valid domain
- Valid user: verify if the user and mailbox really exist
Usage
1. Format
func main() {
err := checkmail.ValidateFormat("ç$€§/az@gmail.com")
if err != nil {
fmt.Println(err)
}
}output: invalid format
2. Domain
func main() {
err := checkmail.ValidateHost("email@x-unkown-domain.com")
if err != nil {
fmt.Println(err)
}
}output: unresolvable host
3. Host and User
If host is valid, requires valid SMTP serverHostName (see to online validator) and serverMailAddress to reverse validation
for prevent SPAN and BOTS.
func main() {
var (
serverHostName = "smtp.myserver.com" // set your SMTP server here
serverMailAddress = "validuser@myserver.com" // set your valid mail address here
)
err := checkmail.ValidateHostAndUser(serverHostName, serverMailAddress, "unknown-user-129083726@gmail.com")
if smtpErr, ok := err.(checkmail.SmtpError); ok && err != nil {
fmt.Printf("Code: %s, Msg: %s", smtpErr.Code(), smtpErr)
}
}output: Code: 550, Msg: 550 5.1.1 The email account that you tried to reach does not exist.
License
Checkmail is licensed under the MIT License.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.

