If .NET 4.0 is installed and .NET 2.0 isn't you need to explicitly override the version number in a config file.
Create YourApp.exe.config in the same folder as the EXE and add:
<configuration><startup><supportedRuntimeversion="v4.0.30319"/><!-- supportedRuntime version="v2.0.50727"/ ---></startup><runtime><loadFromRemoteSources enabled="true"/></runtime></configuration>
This is an explicit override that forces .NET to load version 4.0 if no version is specified (wwSmtp doesn't specify a version).
This is a lame 'feature' in the .NET runtime loading mechanism - it defaults to .NET 2.0 if you don't specify a version. The runtime loader APIs changed with .NET 4.0 and the old APIs weren't updated, so they continue to default to .NET 2.0 unless an explicit override exists in the .config file.
I have never tested this, but that's how it's supposed to work. Let me know if this works.
+++ Rick ---