Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2015
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
Smile Error al descargar emails con acentos

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);   //Decargar la cabezera del correo
         processMail;                     //Procesar los datos del correo

         //se hacen solo 8 correos de ejemplo
         INC(J);
         if J>=8 then break;
      end; //For
    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;                    // se conecta al servidor
      if not Connected then
        MessageDlg('No se ha podido conectar con el servidor.', mtError, [mbOK], 0)
      else
        try
          Result:=RetrieveMails(IdPop31); //Se descargan los emails
        finally
          if Connected then
            Disconnect;           //Se desconecta del servidor
        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
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mandar emails con D4php!! verde_esmeralda PHP 14 29-03-2011 05:10:52
Error al descargar actualizacion de mi aplicacion sitrico Internet 2 13-07-2010 00:15:14
Emails, error de conexion en algunas PC nfrfabian Internet 1 19-09-2007 18:03:29
enviar emails jmlifi Varios 9 25-11-2005 22:16:37
Cadenas de emails santana Humor 1 06-09-2004 17:38:00


La franja horaria es GMT +2. Ahora son las 21:51:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi