using terms from application "Mail"
on perform mail action with messages newMessages
repeat with newMessage in newMessages
tell application "Mail"
set senderName to (extract name from sender of newMessage)
say "You've just received an email from " & senderName
end tell
end repeat
end perform mail action with messages
end using terms from
Save it to something like ~/Library/Scripts/Mail Reader.scpt. In Mail, create a new rule to run the script on every incoming message.
[robg adds: You may wish to tweak the settings in the rule to limit announcements of things like mailing list messages and spam...]

