To export contacts from OSX Contacts.app
Rather than install another program to do something that should have been developed into the contacts application to begin with, you can export all your contacts as a VCARD bundle.
Once you've got the VCARD bundle, you can import them into gmail which supports the VCARD format, and then export them from Gmail in whatever format you like, including CSV.
To check for invalid email
There are many programs that do this, but you should be sure to check what method they use to do it. Some programs will query the smtp server, others will send out test emails which could be considered spam.
You can also do this manually from terminal. I've only attempted it with gmail but you can likely modify it accordingly for any SMTP provider:
Using Terminal on OSX you can follow the following steps to connect to a remote SMTP email server and validate whether or not a specified email address is valid or not.
command
nslookup -type=mx gmail.com
response
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
gmail.com mail exchanger = 5 gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.
command
telnet gmail-smtp-in.l.google.com 25
response
Trying 74.125.193.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP d4si2280017icq.135 - gsmtp
command
HELO //alternately you can try ELHO
response
250 mx.google.com at your service
command
mail from:<wherever@make_something_up.com>
response
250 2.1.0 OK d4si2280017icq.135 - gsmtp
command
rcpt to:<[email protected]>
If the email address is valid you will get a response like this:
250 2.1.5 OK d4si2280017icq.135 - gsmtp
If the email address is invalid you will get a response like this:
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 d4si2280017icq.135 - gsmtp
Obviously if you want to verify a whole bunch of emails you wouldn't want to do this manually for each one but you could easily convert it into a cron job with automator.
There is a shareware windows program that I found which does this and works rather well. I run it on a vmware partition of windows-7 on my computer.
It allows you to check batches of 500 for free, to do any more than that you have to buy the program
http://www.bulkverifier.com/