Seite 1 von 1

ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 13:21
von brandelh
Hallo,

ich versende aus einer Anwendung heraus eMails, den Text gebe ich teilweise fix vor, teilweise wird er in ANSI erfasst.
Wenn nun ein Umlaut drin ist, kommen seltsame Fragezeichen beim Empfänger an ... da war irgendwas mit MIMI ...

Kann mir jemand auf die Schnelle zeigen wie man den Text an Asinet übergeben muss, dass das nicht mehr auftritt ?

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 13:26
von Jan
Hubert,

vielleicht vorher auf UTF-8 konvertieren?

Machst Du das SMTPClient()

Jan

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 13:32
von brandelh
Ich nutze da noch die 1.90.355 - ja mit dem SMTP Client.

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 13:52
von Jan
Hubert,

OK, das ist natürlich blöd. Aber google doch mal danach, ANSI nach UTF-8 per API zu konvertieren. Ich hab da ein paar (meist umfangeriche) Skripte gefunden. Wäre einen Versuch wert.

Jan

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 14:02
von Tom
Xb2.Net hat da Funktionen für, Pablos Klasse auch. Und für eine simple ANSI/OEM->UTF-8-Konvertierung gibt's auch hier im Forum Beispielfunktionen.

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 14:03
von AUGE_OHR
ot4xb

Code: Alles auswählen

cAnsiToUtf8( cAnsi ) -> cUtf8

cUtf8ToAnsi(cUtf8) -> cAnsi

cOemToUtf8(cOem) -> cutf8

cUtf8ToOem(cUtf8) -> cOem

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 14:21
von brandelh
ich kann doch aber nicht davon ausgehen, dass das eMail Programm UTF8 automatisch richtig verarbeitet, die ganze eMail ist doch gar nicht in utf8 oder ?

hier meine gekürzte Versand Funktion:

Code: Alles auswählen

Function SendAsinet(aEmpfaenger,cBetreff,cText,cProgPfad,aAttachFile,cAntwortAdresse,cID)
   ...
   LOCAL oSmtp      := SMTPClient():new( GetSmtpServer(),,, oLog, 2 )
   LOCAL oMail      := MIMEMessage():new()
   ...
   DEFAULT aEmpfaenger TO  { EmailAdresseOK() }
   DEFAULT cBetreff    TO    "Test eMail von ASINET"
   DEFAULT cText       TO  ( "Test eMail von ASINET" + CRLF )
   DEFAULT cID         TO  dtos(date())+"-"+strTran(time(),":","")
   ...
   oMail:setFrom     ( oSender     )
   oMail:setSubject  ( cBetreff    )
   oMail:setMessage  ( cText       )
   aeval(aEmpfaenger, {|cEmp| oMail:addRecipient(MailAddress():new(cEmp) ) })
   // Verbessert einen AsiNet Fehler.
   ? "Setze Datum und Zeit, TimeStampSMTP() = ",TimeStampSMTP()," : ",;
   oMail:addHeader( "Date", TimeStampSMTP() )
   if ! empty(cAntwortAdresse)
      oMail:addHeader( "Reply-To", cAntwortAdresse )
   endif
   ...
   IF oSmtp:connect(cServerConnectUser,cKW)
      IF oSmtp:send( oMail )
         lOK := .t.
         ? "Message sent"
      ELSE
         ? "Unable to deliver message"
      ENDIF

      oSmtp:disconnect()
   ELSE
      ? "Unable to connect to mail server"
   ENDIF
   ...   
RETURN lOK

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Fr, 29. Nov 2019 14:25
von brandelh
Muss ich evtl. da was anderes setzen :

:setContentTransferEncoding( <cContentTransferEncoding> ) --> lSuccess

was wäre für Windows deutsches Ansi der richtige Wert ?
oder der für UTF8 ?

PS: die UFT8 Funktionen habe ich schon, Pablos dll nutze ich auch aus anderen Gründen.

Re: ASINET eMail senden ... mit Umlauten

Verfasst: Sa, 30. Nov 2019 10:47
von brandelh
im Internet unter PHP hab ich die Syntax entdeckt und direkt in den Header geschrieben ...

Code: Alles auswählen

   /* 2.00.091 #2019
      $headers[] = "MIME-Version: 1.0";
      $headers[] = "Content-type: text/plain; charset=utf-8";
      UTF8 übertragung einbauen start
   */

   oMail:addHeader( "Content-type" , "text/plain; charset=utf-8" )
   oMail:setMessage  ( cAnsiToUtf8( cText ) )

   // UTF8 übertragung einbauen ende
seltsamerweise haben danach auch die Umlaute im Betreff in meinem GMX Postfach gestimmt.