Aber selbst der Aufruf von LsMailConfigurationDialog generiert schon die Meldung
Zum Ausführen der gewünschten Aktion ist kein E-Mail-Programm zugeordnet. Installieren Sie ein entsprechendes E-Mail-Programm, oder erstellen Sie in der Systemsteuerung unter “Standardprogramme” eine Zuordnung, wenn bereits ein Programm installiert ist.
Versand der Testmail aus dem Mailkonfigurationsdialog via SMTP erfolgt ohne Probleme, erneutes öffnen “merkt” sich auch den gewählten Providertyp SMTP.
Versandversuch via LsMailJob generiert wieder die obige Meldung. (und versendet nichts)
Hallo Markus, danke für deine Geduld. Bitte entschuldige die lange Bearbeitungszeit.
Nach einer ausführlichen Analyse des Verhaltens möchten wir unsere Erkenntnisse hier teilen.
Der Mail-Konfigurationsdialog (LsMailConfigurationDialog) findet bei der Initialisierung auf einem System ohne installierten Client vermutlich eine Windows-eigene MAPI32.dll. Die Initialisierung dieser DLL schlägt mit der entsprechenden Meldung fehl: “Zum Ausführen der gewünschten Aktion ist kein E-Mail-Programm zugeordnet …”. Da dieser Dialog aber Providereinstellungen für MAPI-Einstellungen ermöglichen soll, wird die Initialisierung der DLL an dieser Stelle trotzdem versucht. Das ist in diesem Schritt unkritisch, da du im Dialog weiterhin problemlos auf SMTP wechseln und speichern kannst.
Beim anschließenden Versand mit LsMailJob sieht es jedoch anders aus:
Der MailJob verwendet ausschließlich den Applikationsnamen oder @@GlobalSettings, um die zuvor gespeicherten Einstellungen in der Registry zu finden.
Beispiel:
Wenn deine Anwendung “Export.exe” heißt, sucht der MailJob automatisch unter… HKEY_CURRENT_USER\Software\combit\cmbtmx\Export.
Wenn dort nichts gefunden wird, wird unter… HKEY_CURRENT_USER\Software\combit\cmbtmx\@@GlobalSettings
… gesucht. Auch wenn du im Konfigurationsdialog einen anderen Registry-Pfad gewählt hast.
Wenn an diesen automatisch erwarteten Stellen keine passenden SMTP-Einträge vorhanden sind, kommt es wie zuvor zu genau der von dir beschriebenen Fehlermeldung.
Wie du das Problem lösen kannst:
Du hast zwei Möglichkeiten:
Den Provider in einem der beiden erwarteten Standardpfade speichern. Im Normalfall raten wir von der Verwendung der globalen Variante ab, da diese unerwarteterweise im Zweifelsfall auch für andere Applikationen gilt.
Alternativ kann man die SMTP-Settings auch “on the fly” nur für die Laufzeit der Applikation von einem dann beliebigen in den erwarteten Registry-Zweig kopieren und bei Beendigung dort wieder entfernen. Das ist aber eigentlich ein ziemlich sinnfreier Ansatz.