Need help with email-verifier?
Click the β€œchat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

AfterShip
155 Stars 16 Forks MIT License 22 Commits 0 Opened issues

Description

:white_check_mark: A Go library for email verification without sending any emails.

Services available

!
?

Need anything else?

Contributors list

email-verifier

βœ‰οΈ A Go library for email verification without sending any emails.

Build Status Godoc Coverage Status Go Report Card license

Features

  • Email Address Validation: validates if a string contains a valid email.
  • Email Verification Lookup via SMTP: performs an email verification on the passed email
  • MX Validation: checks the DNS MX records for the given domain name
  • Misc Validation: including Free email provider check, Role account validation, Disposable emails address (DEA) validation
  • Email Reachability: checks how confident in sending an email to the address

Install

Use

go get
to install this package.

shell script
go get -u github.com/AfterShip/email-verifier

Usage

Basic usage

Use

Verify
method to verify an email address with different dimensions
package main

import ( "fmt"

"github.com/AfterShip/email-verifier"

)

var ( verifier = emailverifier.NewVerifier() )

func main() {

email := "[email protected]"
ret, err := verifier.Verify(email)
if err != nil {
    fmt.Println("check email failed: ", err)
    return
}

fmt.Println("email validation result", ret)

}

Email verification Lookup

Use

CheckSMTP
to performs an email verification lookup via SMTP.
var (
    verifier = emailverifier.
        NewVerifier().
        EnableSMTPCheck()
)

func main() {

domain := "domain.org"
ret, err := verifier.CheckSMTP(domain)
if err != nil {
    fmt.Println("check smtp failed: ", err)
    return
}

fmt.Println("smtp validation result: ", ret)

}

Note: because most of the ISPs block outgoing SMTP requests through port 25 to prevent email spamming, the module will not perform SMTP checking by default. You can initialize the verifier with

EnableSMTPCheck()
to enable such capability if port 25 is usable.

Misc Validation

To check if an email domain is disposable via

IsDisposable
var (
    verifier = emailverifier.
        NewVerifier().
        EnableAutoUpdateDisposable()
)

func main() { domain := "domain.org" ret := verifier.IsDisposable(domain) fmt.Println("misc validation result: ", ret) }

Note: It is possible to automatically update the disposable domains daily by initializing verifier with

EnableAutoUpdateDisposable()

For more detailed documentation, please check on godoc.org πŸ‘‰ email-verifier

Similar Libraries Comparison

| | email-verifier | trumail | check-if-email-exists | freemail | | ----------------------------------- | :----------------------------------------------------------: | :-------------------------------------------: | :---------------------------------------------: | :-----------------------------------------------: | | Features | 〰️ | 〰️ | 〰️ | 〰️ | | Disposable email address validation | βœ… | βœ…, but not available in free lib | βœ… | βœ… | | Disposable address autoupdate | βœ… | πŸ€” | ❌ | ❌ | | Free email provider check | βœ… | βœ…, but not available in free lib | ❌ | βœ… | | Role account validation | βœ… | ❌ | βœ… | ❌ | | Syntax validation | βœ… | βœ… | βœ… | ❌ | | Email reachability | βœ… | βœ… | βœ… | ❌ | | DNS records validation | βœ… | βœ… | βœ… | ❌ | | Email deliverability | βœ… | βœ… | βœ… | ❌ | | Mailbox disabled | βœ… | βœ… | βœ… | ❌ | | Full inbox | βœ… | βœ… | βœ… | ❌ | | Host exists | βœ… | βœ… | βœ… | ❌ | | Catch-all | βœ… | βœ… | βœ… | ❌ | | Gravatar | βœ… | βœ…, but not available in free lib | ❌ | ❌ | | Typo check | πŸ”œ | βœ…, but not available in free lib | ❌ | ❌ | | Honeyport dection | πŸ”œ | ❌ | ❌ | ❌ | | Bounce email check | πŸ”œ | ❌ | ❌ | ❌ | | Tech | 〰️ | 〰️ | 〰️ | 〰️ | | Provide API | πŸ”œ | βœ… | βœ… | ❌ | | Free API | πŸ”œ | ❌ | ❌ | ❌ | | Language | Go | Go | Rust | JavaScript | | Active maintain | βœ… | ❌ | βœ… | βœ… | | High Performance | βœ… | ❌ | βœ… | βœ… |

FAQ

The library hangs/takes a long time after 30 seconds when performing email verification lookup via SMTP

Most ISPs block outgoing SMTP requests through port 25 to prevent email spamming.

email-verifier
needs to have this port open to make a connection to the email's SMTP server. With the port being blocked, it is not possible to perform such checking, and it will instead hang until timeout error. Unfortunately, there is no easy workaround for this issue.

For more information, you may also visit this StackOverflow thread.

The output shows
"connection refused"
in the
smtp.error
field.

This error can also be due to SMTP ports being blocked by the ISP, see the above answer.

What does reachable: "unknown" means

This means that the server does not allow real-time verification of an email right now, or the email provider is a catch-all email server.

Credits

Contributing

For details on contributing to this repository, see the contributing guide.

License

This package is licensed under MIT license. See LICENSE for details.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.