Folders yes, packages no. I often email prerelease builds of my app to people. If I forget to zip the app, it arrives broken (but i havent checked yet what exactly breaks)
I just emailed myself an app from one computer to another using Mail.app and it worked perfectly.
The only thing I can think of is that maybe your email provider modifies the message in-flight because it contains an executable. And that's something Mail.app can't possibly work around. Although if manually zipping your app fixes it then I don't know why that would be.