With SharePoint once a user is added to a SharePoint site the users email is saved at that point in time and only updated if you have the User Profile Service setup and running in which case a timer job updates user information in all site collections in the Farm.
Sometimes farms are created that stand alone and do not have the User Profile service setup or it might be a foundation Farm which has no User Profile Service. In that case this script might be useful.
It gets the Email address from AD for every user in all site collections within a Web Application and updates it if needed.
From a Powershell prompt
To Report on out of date user emails
To update emails
.\FixUserEmails.ps1 http://sharepointurl $true
Should work for 2007 and 2010.
Its not guaranteed to work across multiple domains as the sAMAccountName attribute does not contain the domain, otherwise let me know of any issues. FixUserEmails.zip (2.82 KB)