Check if an email address is correct and really exists using the go programming language
Validation in a nutshell
An Email Address can look right but still be wrong and bounce. mailVALIDATION.io uses in depth email address validation to check if emails really exist without sending any messages.
Checking Formatting
You can use a Regular Expression to check if an Email Address is formatted correctly.
package main
import (
"fmt"
"regexp"
)
func main() {
pattern := 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])?)*$")
email := "foo@bar.com"
matches := pattern.MatchString(email)
fmt.Printf("email %v matches the pattern %v", email, matches)
}
But these the Email accounts might not actually exist and if you send an Email to them it might bounce.
Using API Key
With an API key you will be able to test lots of emails each day.
package main
import (
"fmt"
"net/http"
"io/ioutil"
"encoding/json"
"net/url"
)
type RealEmailResponse struct {
Status string `json:"status"`
}
func main() {
email := "foo@bar.com"
apiKey := // todo login to get api key
jsonBody :[]byte('{"email": email}')
bodyReader := bytes.NewReader(jsonBody)
url := "https://app.mailvalidation.io/a/{team_slug}/validate/api/validate/"
req, _ := http.NewRequest("POST", url, bodyReader)
req.Header.Set("Authorization", "Api-Key " + apiKey)
res, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Printf("error %v", err)
return
}
if res.StatusCode != 200 {
fmt.Printf("unexpected result, check your api key. %v", res.Status)
return
}
var myJson RealEmailResponse
json.Unmarshal(body, &myJson)
fmt.Printf("status for %v is %v", email, myJson.Status)
}
Bulk CSV File
Depending on your use case you may like to use the bulk email validation and read the csv file with go. You can validate a csv file full of emails addresses using the mailVALIDATION.
Get started with email address validations today.