LL31 SP3 - Fehler beim Setzen E-Mail Empfänger und Betreff für den versand aus der Vorschau heraus

Ich belege E-Mail Adresse und Betreff für den Versand au der Vorschau heraus vor:

LL_OPTIONSTR_MAILTO für die Mailadresse
LL_OPTIONSTR_MAILTO_SUBJECT für den Betreff

Im Debug-Log sieht das ersteinmal gut für mich aus.
Später steht im Logfile:
“Mail Client Thunderbird with wrong bitness found (64 bit)” und
“mail client is installed with the wrong bitness… I need to restrict myself to MAPISendMail() and hope it all goes well…”

Danach werden die vorbelegten Einträge offenbar durch Registry-Einträge in:
Computer\HKEY_CURRENT_USER\Software\combit\cmbtls\HARMONIA_CRAFT
(HARMONIA_CRAFT ist der Name der EXE)
Export.MAIL.To und Export.MAIL.Subject
überschrieben.

Ich denke, das Problem gibt es erst seit ich vor kurzem auf LL31 umgestiegen bin.
Hat Jemand einen Tipp, was die Ursache ist und wie ich das Problem lösen kann?

Danke für Tipps,

Ingo

Nachtrag: das Problem tritt offenbar erst auf, nachdem beim E-Mail Export die Option “Einstellungen permanent speichern” ausgewählt wurde.


Hier ist der m.E. relevante Auszug aus dem Debug-Log:

Debwin4_Auszug.log4 (6.2 KB)

Mir würde nur einfallen die Export-Export Optionen für den Mail-Versand einmal via LlXSetParameter zu setzen - siehe auch: E-Mail-Parameter per Programm setzen.

Aktuell scheint es zu sein, dass nur Vorbelegungen für die Vorschau via LlSetOptionString gesetzt zu werden. Und wenn in der Registry da schon was gespeichert wurde, wird die Vorbelegung damit überschrieben.

Danke für den Hinweis.

Aber ich denke, ich bin da entweder einem LL-Fehler auf der Spur, oder ich mache irgendeinen logischen Fehler, der sich erst jetzt ab LL31 auswirkt.

Im konkreten Fall bin ich so vorgegangen:

Beim Mailversand aus einer beliebigen Druckvorschau heraus, setze ich die Checkbox “Einstellungen permanent speichern”, nachdem ich z.B. “PDF-Datei” ausgewählt habe.

In der Registry werden daraufhin u.a. die Einträge
Export.MAIL.To
Export.MAIL.Subject
belegt, entweder mit einem leeren String oder den vorbelegten Einträgen für Subject und Empfänger.

Ab diesem Moment werden die Einträge für Subject und Empfänger bei allen(!) folgenden Mailexporten aus der Vorschau heraus mit genau diesen Einträgen vorbelegt und zwar unabhängig davon, ob vom Programm per LlSetOptionString(LL_OPTIONSTR_MAILTO, LL_OPTIONSTR_MAILTO_SUBJECT) Subject und Empfänger vorbelegt wurden oder nicht.

Zum Testen habe ich dann aus der Registry die Einträge:
Export.MAIL.To
Export.MAIL.Subject

gelöscht (bzw. umbenannt.)

Danach funktioniert das Vorbelegen E-Mail Empfänger und Subject per LlSetOptionString (LL_OPTIONSTR_MAILTO, LL_OPTIONSTR_MAILTO_SUBJECT) so lange, bis ich die Checkbox “Einstellungen permanent speichern” für den Mailversand (erneut) aktiviert habe.

Der Registry-Eintrag “Export.File” wird beim “permanent speichern” ebenfalls geschrieben, allerdings beim Export aus der Vorschau heraus und beim “stillen” Export ignoriert.

LlSetOptionString (LL_OPTIONSTR_PREVIEWFILENAME) bzw. LlXSetParameter(LL_LLX_EXTENSIONTYPE_EXPORT, “PDF”, “Export.File”) überschreiben den Registry-Eintrag.

Was meinen Sie - ist das ein LL31-Fehler oder mache ich irgendetwas falsch?

Danke für Tipps!

Wenn ich mich darauf stürze, würde ich für einen Test wie vorgeschlagen einmal entsprechend LlXSetParameter() verwenden für die Mail-Optionen - sowas in der Art:

...
LlXSetParameter(LL_LLX_EXTENSIONTYPE_EXPORT, "", "Export.Mail.To", "VALUE")
LlXSetParameter(LL_LLX_EXTENSIONTYPE_EXPORT, "", "Export.Mail.Subject", "VALUE")
...

Was kommt denn dabei dann raus? Ist dann das gewünschte Ergebnis dabei?

Wenn ich statt LlSetOptionString LlXSetParameter verwende hat das den selben Effekt: Es wird immer der Eintrag aus der Registry für die Mail genommen und die im Programm angegebenen Inhalte werden ignoriert.

Hallo @Ingo_Kothke,
hallo @Oliver_Hambrecht,

wir werden uns das einmal im Rahmen diverser Tests genauer anschauen und prüfen, welche Optionen es für die Lösung der Anforderung gibt. Sobald etwas Neues dazu vorliegt, melde ich mich.

Grüße,
Daniel

Moin Daniel,
super, vielen Dank schon mal!
Schönen Abend, Ingo

Da der Anwender die Option “Einstellungen permanent speichern” aktiviert hatte, werden die Einstellungen des Anwenders entsprechend in den genannten Registry-Pfad serialisiert:
HKEY_CURRENT_USER\Software\combit\cmbtls\<APPNAME_WITHOUT_EXTENSION>\

Somit stehen dann die Einstellungen später für den Anwender wieder zur Verfügung. Analog verhält es sich auch mit Export-Optionen aus der Vorschau heraus.

Prinzipiell ist das Verhalten so gewollt und by-design - schließlich hat der Anwender (unabhängig von der Anwendung/API) sich dafür entschieden Einstellungen permanent speichern zu wollen. Änderungen an diesem Verhalten können nicht berücksichtigt werden, da sich andere Implementierungen und Anwender darauf verlassen.

Sollte nun aber das Verhalten von der Anwendung nicht gewünscht sein, und die Einstellungen des Anwenders bewusst ignoriert werden, so kann man in der Windows-Registry die gewünschten Optionen selektiv zuvor entfernen, damit die Einstellungen aus der Anwendung/API wieder berücksichtigt werden.

Moin Daniel,

danke für die Infos.
Allerdings muss ich dazu noch was loswerden:
Das dauerhafte Vorbelegen von E-Mail Empfänger und Betreff für den Versand als Mail aus der Vorschau heraus für alle(!!!) Druckausgaben eines Programms bei der Auswahl „Permanent speichern“ in einem Fenster, in dem man ausschließlich festlegen kann, welches Format versendet werden soll und ob die Mail vor dem Versand angezeigt werden soll, oder der Versand „still“ erfolgen soll, ist nicht sinnvoll und das war definitiv nicht „schon immer“ so.

Hintergrund:
Ich habe für einige Kunden eingerichtet, dass vor dem Aufruf des Druckerdialogs der Vorschlag für den Mailempfänger ausgewählt werden kann. (Der Kunde meines Kunden, der z.B. die Rechnung erhalten soll, hat z.B. eine separate Mailadresse für Eingangsrechnungen, eine/mehrere für Angebote usw.) Das ist mindestens 8 Jahre her. Jetzt habe ich diese Option für einen anderen Kunden / ein anderes Programm eingerichtet und war echt überrascht, dass es nicht mehr möglich ist, den Standard-Ausgabetyp (PDF) zu setzen ohne damit für alle(!!!) Mail-Ausgaben des Programms den Empfänger und den Betreff festzuschreiben. Ein Programm kann dutzende unterschiedliche Formulare ausgeben.

Das bedeutet für mich, dass jedes Mal, wenn ein Anwender aus „Unwissenheit“ die Checkbox „Einstellungen permanent speichern“ für die Ausgabe als PDF wählt, die entsprechenden Schlüssel aus der Registry löschen muss, bzw. der EDV-Abteilung mitteilen muss, dass die das bitte machen soll, wenn der Anwender nicht über Admin-Rechte auf seinem PC verfügt.

Ich kann nicht mehr ohne riesen Aufwand feststellen, wann diese Änderung eingeführt wurde, weil das Problem erst nach dem Setzen der „permanenten“ Einstellungen auftritt – da die Leute jahrelang mit den Programmen arbeiten und das Setzen der „permanenten“ Einstellungen nur einmal erfolgen muss, kann das „irgendwann“ gewesen sein.

Was ich jetzt noch testen muss:
Diverse Programme erzeugen einen Massen-Mailversand (Urheber-Abrechnungen) per LL SMTP: LlXSetParameter( ::hJob, LL_LLX_EXTENSIONTYPE_EXPORT, “”, “Export.SendAsMail”, “0” )

…und das i.d.R. ohne Benutzerinteraktion. Empfänger, BCC, Betreff, Anhänge werden per LlXSetParameter gesetzt.

Wenn jetzt ein Benutzer die Checkbox „permanent speichern“ einmal beim Versand per Mail aus der Vorschau heraus gesetzt hat und das dazu führt, dass der gesamte Massenmail-Versand an die selbe Adresse geschickt wird, haben mein Kunde und ich ein ernsthaftes Problem.
Ich werde das jetzt testen und ggf. meine Kunden informieren (und hoffe, die verstehen das Problem dann überhaupt.)
Aber bitte denken Sie das noch einmal durch, ich kann mir echt nicht vorstellen, dass das so gedacht ist und dass ich der Einzige bin, bei dem dieses Verhalten zu Problemen führen kann.

Gruß aus dem Norden,

Ingo

Ich habe jetzt geprüft:
Die Registry-Schlüssel für Empfänger und Betreff (+weitere) werden nur dann geschrieben, wenn der E-Mail Empfänger / Betreff vom Programm vorbelegt sind. Das verkleinert das Problem für mich zwar etwas, trotzdem bitte ich Sie zu überlegen, ob das Speichern dieser Daten (außer dem Standardformat und der Option “Mail vor dem Versenden anzeigen”) in der Registry wirklich sinnvoll ist.

Und noch eine Prüfung:
Der Massenversand per SMTP-Mail ist von den Registry-Einträgen nicht betroffen, die werden offenbar nur beim Versand per Mail aus der Druckvorschau heraus ausgewertet.
(Ein Glück!!)

Hallo Ingo,

besten Dank für deine ausführlichen Tests, Worte und Bedenken, die mich veranlasst haben, die Sache mit den neu geschilderten Aspekten doch noch einmal genauer zu untersuchen.

Es wird eine Anpassung dafür in der Version 31 erforderlich sein, die du im Rahmen des Latest Prerelease Service Packs ab morgen in deinem Account beziehen und testen kannst, damit wieder das ursprüngliche Verhalten hergestellt wird. Bitte gib uns im Anschluss dein Feedback dazu.

Grüße aus Konstanz,
Daniel

Moin Daniel,

das klingt super - herzlichen Dank!
Ich bekomme dann eine Mail, wenn das Service Pack breit liegt nehme ich an. Ich werde Testen und mich melden.

Schönen Gruß,

Ingo

Im Download-Bereich des Accounts kann eine aktualisierte Version des Latest Prerelease Service Packs bezogen werden, dass das hier beschriebene Verhalten löst.