Powershell to the rescue!

With AD cmdlets (2008+):

For more details about Get-Recipient: http://technet.microsoft.com/en-us/library/aa996921(v=exchg.80).aspx

else
Get-ADObject -LDAPFilter “objectClass=Contact”

For more details about get-adobject: http://technet.microsoft.com/en-us/library/ee617198.aspx

Get-ADObject cmdlet with -LDAPFilter “(objectCategory=person)”. This retrieves all user and contact objects.
The -SearchBase parameter can be used to specify an OU.

Or use Get-Contact cmdlet:

for a full list of attributes Get-Contact ‘contact name’ | fl

Get-Contact -resultsize unlimited | select-object name,Phone,company | export-csv contacts.csv

With Quest cmdlets for AD:

Get-QADObject -type ‘Contact’ -IncludedProperties ‘mail’

Get-QADObject -type ‘Contact’ | select Name, PrimarySMTPAddress | export-csv contacts.csv

or use Get-QAContact instead:  Get-contact | Select Name,WindowsEmailAddress

For more details about get-qadobject: http://en.community.dell.com/techcenter/powergui/f/4833/t/19573655

With Exchange cmdlets:

http://oxfordsbsguy.com/2014/04/07/exchange-powershell-how-to-list-all-smtp-email-addresses-in-exchange/