Einzelnen Beitrag anzeigen

Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#1

Indy TIdSMTPServer.OnMsgReceive & UNICODE?

  Alt 20. Okt 2011, 18:13
Hallo zusammen,

bisher habe ich mit den Indy Komponenten echt gute Erfahrung gemacht doch jetzt komme ich an meiner Schmerzgrenze weil ich einfach nicht erkennen kann wie ich in der Methode OnMsgReceive die Daten aus AMsg in UNICODE einlesen kann. Hintergrund ist der das ich die eMail als Textdatei auf die HDD speichern möchte und diese eben bei einigen Usern kyrillische Buchstaben enthalten kann, welche momentan in den Mails verschwinden. Warum ich diese aus dem AMsg Stream nicht auf die HDD bekomme ist mir noch ein Rätsel.

Bei beiden Varianten sind die Kyrillischen Zeichen aus der eMail nicht sichtbar sonder nur 4 Zeichen die vom Editor nicht dargestellt werden.

Kann mir einer verraten was ich falsch mache und wo mein Verständnisproblem ist?


Gruß Frank

Delphi-Quellcode:
{--- MsgReceive ---------------------------------------------------------------}
procedure TfrmMailServer.smtpsMsgReceive(ASender: TIdSMTPServerContext;
                                         AMsg: TStream;
                                         var LAction: TIdDataReply);
var strlMsg:TStringList;

begin
{1. Versuch direkt in eine Stringliste kopieren und speichern...}
  strlMsg:=TStringList.Create;
  strlMsg.LoadFromStream(AMsg);
  strlMsg.SaveToFile('C:\Temp\lastmsg_stringlist.txt');

{2. Versuch über eine IdMessage Komponente...}
  msgSmtp.Clear;
  msgSmtp.NoEncode:=False;
  msgSmtp.NoDecode:=False;
  msgSmtp.Encoding:=meMIME;
  msgSmtp.CharSet:='UTF-8';
  msgSmtp.LoadFromStream(AMsg);
  msgSmtp.SaveToFile('C:\Temp\lastmsg_idmsg.txt');

  {Dem Client ein Ok geben auch wenn die Daten falsch gespeichert wurden :-( }
  LAction:=dOk;

finally
  FreeAndNil(strlMsg);
end;

end;
Frank
  Mit Zitat antworten Zitat