Why not use UUIDs for this? They're unique so you don't have to worry about checking if an ID is already taken and you can avoid the encoding/decoding issues. There's even lexicographically sortable UUIDs (ulid) which can be a rather useful proprety and don't use any characters that can trip you up.
I would also caution against assigning meaning to names. Even though something like MEET_ or USR_ might seem innocuous such naming conventions are likely to eventually be broken. Instead make the object tell you what it is, a user vs a meeting or something else entirely.
Why is the output so different based on the client? Yahoo and GMail seem to be missing the top and bottom bar, whereas in Outlook you get a border on all sides. Thunderbird seems to be about the only one that renders it as expected?