Email Validation For B2B Sales Emails
For the innovative category of the 2023 ZeroBounce Hackathon.
There is no point in sending an email that a human will never read
Contents
Demo
Preview
Intention
We have built a validation check that validates format and performs a SMTP validation step on the recipient MX. This works well, but it wouldn’t be a good hackathon without pushing the envelope — So we want to take it an extra step and innovate.
B2B sales, particularly in the tech space, frequently works with customers who have a web presence, so why not go another step and validate that the recipient domain has an active website? This further reduces the likelihood of sending email to a parked domain when reverifying old contact lists or as a sanity check on an existing one.
Purpose
To build a scalable and accurate validator to maximize the chances of deliverability to a human.
The team recognizes the methodologies below are not new to the email industry. We decided to not only build a tool that validates emails but also add some additional information for email lookups, checking for an active website, and logo.
Team
Reid Workman | Project Lead / Developer - Former Email Lead at ESP |
Project
Validation Methodology
- Validate Email format - Start with the basics, is this a valid email address format?
- Transform Base email format - Transform syntax sugar to simple email.
- eg. user+name@domain.com to user@domain.com
- Validate Domain exists - Dig to validate the domain is valid
- Validate MX is valid - Does the domain accept email?
- SMTP Verification - Attempt to start a conversation about an email address.
- If we are blocked, apply a cooldown on the target IP and email address.
Code and APIs
All APIs used in this demo are internally built.
- Initial draft and much of the early work may be found on Replit.
- I host my own “hackathon framework” (similar to Replit) to help stand up individual services called Serial. This hosts the main code found in the demo.
- SMTP Validation - PHP script on Linode [code]
- Business scraping tools is a web spider I built - Code is available upon request — It’s a separate app I built on Serial.
Blockers
- Some receiving MXs had significant cooldown times between sends, particularly with Cox.net emails. The validated list provided frequently worked once, then would not work and return:
452 4.1.0 <sender> server temporarily unavailable. Refer to Error Codes section at
https://www.cox.com/residential/support/email-error-codes.html
for more information. AUP#CXMXRT
- Intelligent management of proxy IPs rotating around this cooldown for a scalable long-term fix. Long shot, but it may be worth a conversation with the Cox business team for partnership.
- Cloudflare-hosted MX rejected requests that do not have a reverse IP lookup.
Future work
Hackathons rarely grow beyond their initial scope, however, if this project were to continue development, I’d add the following:
- Multiple line input
- CSV Import / Export
- Intelligent management of caching and validating against the same MX for a domain.
- Scaling to more requests
- IP Proxy rotation