MsgHTML() always overwrites the value of Body, but if AltBody has already been set to a non-empty value, it's left untouched. This doesn't make sense when AltBody is populated by MsgHTML if it is initially empty, meaning that subsequent calls to MsgHTML will change Body but not AltBody. This is probably unexpected if you're creating and sending messages in a loop. If you want AltBody to be kept, it's simple to set it after calling MsgHTML, or simply don't use MsgHTML in the first place. The whole point of MsgHTML is to make message setup simpler, so it should overwrite AltBody every time.
This issue was originally reported on sourceforge by Thilo Muller.