PyCall.jl tries to automatically convert Python return types back to native Julia types. Since that’s not always what you want (as in this case) you can use the lower-level pycall function, which lets you specify the expected return type. Specifying a return type of PyObject avoids any automatic conversion:
using PyCall
@pyimport email
pymsg = pycall(email.message_from_string, PyObject, data[1][2])
pymsg[:get_payload](decode=true)