Your suggestion of using a ShowMessage was a good one! While the breakpoint is only triggered once, it shows three messages.
I removed the call from the FormCreate (which is only called once, as far as breakpoints go) and made a button. Pressing the button sends a single email...
Why it was called multiple times without triggering breakpoints, I don't know. But it seems to work now...
Edit: I restored the Synapse SendToEx, and it works as well.
After further investigation, I think I know what is happening:
There is a TChromium component on the form, and if I look in the TaskManager, it shows three processes. Only one of them (the main/GUI thread) is visible, but it seems that the other two have a form as well, and that the constructor executes.
I was under the impression that those other processes contained only the CEF3 processes, but it seems they're forks.