Just a follow-up note on this solution for preserving the Outlook signature.
In order to access the WordEditor property, the inspector for the mail item must be the active inspector; if it happens
to be the active inspector it should work every time, but it's not a guarantee that it will always be the active inspector. From here
...you need to wait until the first Inspector.Activate() event for that to be valid usually, before that you get only weak object references.
I think the safest route to avoiding this problem would be to trigger that activate event every time once the inspector has been obtained.
m := ComObjActive("Outlook.Application").CreateItem(0)
m.Subject := "Hi There"
m.To := "[email protected]"
myInspector := m.GetInspector, myInspector.Activate
wdDoc := myInspector.WordEditor
wdRange := wdDoc.Range(0, wdDoc.Characters.Count)
wdRange.InsertBefore("This is the body")