There's at least 50 ways to do it because there's no "right" answer. You're losing semantic information when you go from HTML to plain text, so you have to be the judge of how lossy you want the transfer to be,
and what proxies you want to have in the text form for things that cannot be represented.
There are people who write HTML emails and actually use the HTML for the semantic information HTML can provide? Amazing. I always thought 90% of such emails was written by people who may know HTML, but have no idea how to code in it, or how to configure their mail program to send anything else, and the remaining 10% uses it for BLINK and coloured fonts.
"I write HTML email for the semantic information" sounds like "I read Playboy for the articles". It's possible, but no significant number of people actually do it.
And now remove the bolding. You can't distinguish those. The semantic content is in the bolding. If you had only ASCII, you might add *markup* or _something_ to provide the right emphasis. But if you just rip out the HTML coding, you have indeed lost something.
This is quite common. I don't know why you think it's rare. :)