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;