I had a situation where I needed the email address (and other information) for a user that was in a field in a SharePoint list. Turns out to be pretty simple to get a handle to, once you know the objects. There are actually a few ways to get the information. I tried a couple ways but found that they were inconsistent: it would work under these conditions but not these. This is the final solution that I ended up using.
Within each site collection, there is a “User Information List” that gets populated with information about the users that have access to any of the content throughout the site collection. This is where you can consistently pull the information (of course, assuming that the data has been provided). The code that I will share is pulled from a SharePoint 2007 workflow. I’m pulling out pieces, so it might not be exactly cut/paste –able, but it will give the objects and relationships necessary.
That’s all there is to it. Nice and simple.