Ich habe mit RAD2009 und
Indy ein ähnliches Problem gehabt und es wie folgt gelöst.
Delphi-Quellcode:
procedure TForm.IdMessage_InitializeISO(var VHeaderEncoding: Char; var VCharSet: string);
begin
VHeaderEncoding := 'B';
VCharSet := 'ISO-8859-1';
end;
procedure TForm.SendMail;
var IdMessage1: TIdMessage;
SubjectStr, BodyText: string;
begin
...
IdMessage1.ContentTransferEncoding := 'BASE64';
IdMessage1.OnInitializeISO := IdMessage_InitializeISO;
IdMessage1.ContentType := 'text/plain';
IdMessage1.CharSet := 'ISO-8859-1';
IdMessage1.Subject := _MIMEConvert(true, SubjectStr);
IdMessage1.Body.Text := BodyText;
...
end;
Die Funktion _MIMEConvert() wandelt die deutschen Sonderzeichen im String um:
'Ä' wird zu '=?iso-8859-1?q?=C4?='
'€' wird zu '=?iso-8859-15?q?=A4?='.
weitere Details zur Codierung unter
http://de.wikipedia.org/wiki/ISO_8859-1. Diese Umwandlung ist allerdings nur für den Mail-Header notwendig. Mit o.g. Einstellungen kann im Mail-Body beliebiger Text als String mit Umlauten übergeben werden.
Weitere Lösungsansätze gibt es auch unter
https://forums.codegear.com/thread.jspa?threadID=7019