Hola amigos,
estoy intentando descargar correos de una cuenta de un servidor propio, y poder extraer cierta información de dichos correos, para lo cual conecto mediante un TIDPOP3 y descargo mediante un TIDMESSAGE, la descarga se realiza hasta aquí perfectamente. El problema viene al tratar de procesar los datos del mensaje, en donde los acentos aparecen de forma extraña (interrogación sobre rombo negro). No ocurre en todos los correos, los que el charset lo detecta y marca como UTF8 van perfectamente, pero los que el charset no lo detecta y lo deja vacio fallan.
Aqui pongo el código que utilizo para conectar y descargar:
Código Delphi
[-]procedure TLeerEmail.ProcessMail;
begin
With Memo1, lines, IdMessage1 do begin
Add(IdMessage1.Headers.Text);
Add('CHARSET: '+IdMessage1.CharSet);
add('Original ('+IdMessage1.ContentTransferEncoding+'): '+IdMessage1.Subject);
add('');
Application.ProcessMessages;
end;
end;
function TLeerEmail.RetrieveMails(IdPop31: TIdPOP3): boolean;
var
i, J:integer;
begin
Result:=true;
with IdPop31 do
try
J:=0;
For i:= CheckMessages downto 1 do begin
IdMessage1.Clear;
RetrieveHeader(i, IdMessage1); processMail;
INC(J);
if J>=8 then break;
end; except
On E:Exception do begin
result:=false;
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
end;
end;
function TLeerEmail.DescargarEmails: boolean;
var
i:longint;
begin
result:=false;
GetUserPassPop3;
With IdPOP31 do
try
AutoLogin := True;
Connect; if not Connected then
MessageDlg('No se ha podido conectar con el servidor.', mtError, [mbOK], 0)
else
try
Result:=RetrieveMails(IdPop31); finally
if Connected then
Disconnect; end;
except
On E:Exception do
MessageDlg('DescargarEmails: Error al conectar con el servidor.', mtError, [mbOK], 0);
end;
end;
Analizando mas a fondo el contenido del mensaje que falla, se ve que esta codificado en WINDOWS-1252,
pero por mas que he probado ha cambiar el CHARSET antes y/o déspues de leer el mensaje o convertir las cadenas con las funciones de conversión entre codificicaciones, no he
conseguido solucionar el problema.
Comento que los componentes INDY son la versión 10.6.0.4975 que se supone que tienen ya resuelto todo el tema de codificación para los distintos caracteres
y esto lo ejecuto sobre DELPHI XE4
Agradecería cualquier ayuda al respecto
