Email is still a contract, it's written proof that you agreed the project under certain terms. The main problem is that emails tend to be written more casually than a contract, so the wording may be ambiguous.
TBH, many people do not care for, nor understand the point behind restrictive licenses such as 'you can only use this for print, not web', other than assume you are doing it to gouge more money out of them in the future. All they know is that they paid you for your time and they want to do with the images as they please. It's not always about 'poor ethics' - to a lay person (and even people in your own industry) these licenses seem unnecessarily restrictive.
On its own, making them sign a contract probably wont make much difference TBH. Clearly communicating the reasoning behind the licenses would work better, but for me, I just do away with all that, charge them for my time and give them the files for them to do as they please. That way they are a happier client and are more likely to come back to me with further work, rather than take their business elsewhere to a developer with less licenses for them to deal with.