Last active
December 2, 2023 13:10
-
-
Save mikedamage/5564196 to your computer and use it in GitHub Desktop.
Ping an email address to see if it exists. This script resolves MX records to find the SMTP server responsible for delivering mail to the address, connects to it, and starts to send a message to the address. It disconnects before the message is sent.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# | |
# = Email Ping | |
# | |
# Check to see if an email address exists by looking up MX records and connecting | |
# to the address's home SMTP server. It then starts to send a message to the address | |
# but quits before the message is actually sent. | |
require 'resolv' | |
require 'net/smtp' | |
address = ARGV[0].chomp | |
domain = address.split('@').last | |
dns = Resolv::DNS.new | |
puts "Resolving MX records for #{domain}..." | |
mx_records = dns.getresources domain, Resolv::DNS::Resource::IN::MX | |
mx_server = mx_records.first.exchange.to_s | |
puts "Connecting to #{mx_server}..." | |
Net::SMTP.start mx_server, 25 do |smtp| | |
smtp.helo "loldomain.com" | |
smtp.mailfrom "[email protected]" | |
puts "Pinging #{address}..." | |
puts "-" * 50 | |
begin | |
smtp.rcptto address | |
puts "Address probably exists." | |
rescue Net::SMTPFatalError => err | |
puts "Address probably doesn't exist." | |
end | |
end | |
# vim: set ft=ruby ts=2 sw=2 : |
Hey @mikedamage nice code, but i was wondering, if you do this too much ( like 50.000 times a day ) the smtp servers could block you for some kind of spam?
Verify email with bulk check http://emailchecker.info/bulk-email-verifier.php
Cheapest bulk email verify at http://www.mycleanlist.com
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, sorry with this quistion, but do I use this file ?
Thanks :)