MailItem in changing times.
According to the
documentation,
the first parameter of the Reply (and ReplyAll, and Forward)
events on a MailItem event in Outlook is “the new item being sent in
response to the original message”.
Uh, no. At least in VSTO; not sure about VBA, but I cannot see how it could be different there given that VSTO is a wrapper around the same COM interfaces. The argument is the original item that is being responded to:
void OnReply(object Response, ref bool Cancel)
{
    Cancel = false;
    if (Response is Outlook.MailItem item) {
        string html = item.HTMLBody;
        int pos = html.LastIndexOf("</body>");
        item.HTMLBody = html.Insert(pos, "This is the modified item. ");
    }
}
After this handler runs, the original item that was replied to will have the new sentence at the end, while the reply is entirely original. I suppose this means that the response message is created first, and then the event fires with the wrong argument.
Helpfully, though, when using Outlook’s preview/reading pane (whatever
its name is this afternoon) the InlineResponse event on the
Explorer object actually gets the correct message, i.e. the new one.