Hallo,
bei meinem aktuellen Problem hab ich es jetzt so gemacht:
Delphi-Quellcode:
...
pop.RetrStream(i, retrStream);
retrStream.Position := 0;
mess.Lines.LoadFromStream(retrStream);
mess.Lines.Text:=replaceUmlaute(mess.Lines.Text);
mess.Lines.Text:=DecodeQuotedPrintable(mess.Lines.Text);
...
Delphi-Quellcode:
function replaceUmlaute(Text:
string):
string;
begin
Text := StringReplace(Text, '
=F6', '
ö', [rfReplaceAll]);
Text := StringReplace(Text, '
=D6', '
Ö', [rfReplaceAll]);
Text := StringReplace(Text, '
=FC', '
ü', [rfReplaceAll]);
Text := StringReplace(Text, '
=DF', '
ß', [rfReplaceAll]);
Text := StringReplace(Text, '
=E4', '
ä', [rfReplaceAll]);
Text := StringReplace(Text, '
=C4', '
Ä', [rfReplaceAll]);
Text := StringReplace(Text, '
=DC', '
Ü', [rfReplaceAll]);
Result := Text;
end;
Also erst wird nach diesen "falschen" =D6 gesucht und ersetzt (mit function replaceUmlaute)und dann mit function DecodeQuotedPrintable aus synacode.pas die "richtigen" HEX Werte, also die =C3=B6, usw. umgewandelt.
diese Reihenfolge ist notwendig, sonst klappt es wieder nicht!
Dann schaut es gut aus. Ich werd mal noch ein paar andere Mails damit laden. Wahrscheinlich tauchen noch andere Werte auf. Die müßte ich dann halt auch noch in meine funktion reinschreiben. Oder vielleicht gleich die ganze Zeichensatztabelle??
Nur ...welche? Was ist denn das für ein Zeichensatz, der =F6,=D6, usw. definiert???
Danke.
Josef
P.S.
Ein weiteres Problem sind Mails, die mit der PHP Mail funktion verschickt werden.
Bei php mail() reicht es, ein from und ein to anzugeben.
Du findest dann kein Date oder keine Message-ID im Kopf usw. Auch kann "Message-Id" oder "Message-ID" im Header geschrieben werden, um die Werte zu definieren. usw.
Mit anderen Worten:
Ich habe es mir viel einfacher vorgestellt,meinen eigenen pop client zu machen.
In einem anderen Post hab ich gefragt, wie ich ein Datum in Form von "Mon, 3 Feb 2014 02:57:08 +0100 (CET)" im Headertext finden kann (also kein Date: davor).
Bisher keine Antworten. Ich weiß es auch nicht.
vielleicht dazu eine Idee???