unicode hardening for python 2

When you try and encode byte strings that are outside ascii, python first decodes them using the `sys.getdefaultencoding()` (which is almost always ascii in python 2), this results in an error being raised like:

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

I noticed this was happening in the `_build_body()` method and it's such a small fix I figured I didn't need to submit an issue or anything first, that's why you're just randomly getting a pull request from me.

Just let me know if there is anything else I can do to help get this merged :)