E-Mail mit SMAPI aus List &Label und Umlaute

Hallo,

wenn ich eine E-Mail per SMAPI an Outlook übergebe, stimmen die Umlaute nicht mehr. Ich schreibe den Text mit Umlauten ISO-8859-1-codiert in eine Variable this.mailbody und sende das an Outlook:

LlXSetParameter(this.hJob, LL_LLX_EXTENSIONTYPE_EXPORT, “PDF”, “Export.Mail.Provider”, “SMAPI”)
LlXSetParameter(this.hJob, LL_LLX_EXTENSIONTYPE_EXPORT, “PDF”, “Export.Mail.Body”, this.mailbody)

Im Outlook kommen die Umlaute falsch an, aus ö wird v aus ß wird _. Was kann ich tun, dass Outlook die Umlaute richtig darstellt.

Viele Grüße
Jan Bleiß

Es wird empfohlen den Export.Mail.Body als Unicode zu übergeben, hierzu muss aber auch die Unicode-API verwendet werden.
Welche Version von List & Label verwenden Sie den und mit was für einer Entwicklungsumgebung arbeiten Sie?

Ich benutze LL19 und dBase Version 12.3 als Entwicklungsumgebung.

Jetzt benutze ich LL24, welche Unicode-Api ist gemeint?

Der dBASE-Wrapper in LL24.cc verwendet die ANSI-API, das sehen Sie an dem “A” hinter LlDefineFieldExt:

EXTERN CLONG      LlDefineFieldExt(CLONG, CSTRING, CSTRING, CLONG, CPTR) CMLL24.DLL FROM "LlDefineFieldExtA"

Mir ist nicht bekannt, ob dBASE intern auch mit Unicode-Strings arbeiten kann? Solange alle beteiligten sich über die Western Codepage einig sind sollte es allerdings auch mit den Umlauten klappen. Könnten Sie einmal eine Logdatei des Vorgangs (die Sie mit Debwin4.exe erstellen können) hier anhängen? Die Vorgehensweise dazu ist hier beschrieben:

Es geht ja um Betreff und Mailbody in der an Outlook übergebenen Mail. Ich gehe davon aus, dass LL den String “as is” überträgt. Also habe ich es jetzt wie folgt gemacht:

LlXSetParameter(this.hJob, LL_LLX_EXTENSIONTYPE_EXPORT, “PDF”, “Export.Mail.Subject”, class::convUnicode(this.subject))
LlXSetParameter(this.hJob, LL_LLX_EXTENSIONTYPE_EXPORT, “PDF”, “Export.Mail.Body”, class::convUnicode(this.mailbody))

Die Funktion convUnicode ist eine Eigenschöpfung, die aus Asccii-Zeichen Unicode-Zeichen macht. Am Freitag kann ich es beim Kunden testen.

Dabei ist dann aber wichtig, ob intern die LlXSetParameterA oder LlXSetParameterW-Methode aufgerufen wird (vgl. die Deklaration oben). Die “A”-Variante rechnet nicht mit einem Unicode-String, da würden Sie dann lediglich das erste Zeichen erhalten. Andernfalls müssten alle Strings als Unicode übergeben werden. Wenn Sie möchten kann ich unseren Partner aus der dBASE-Community noch zu der Thematik befragen - vielleicht kann er da Licht ins Dunkel bringen :slight_smile:.