Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Recibir mail borrando la copia del servidor

Hola amigos, estoy realizando una aplicacion para enviar y recibir mails con archivos adjuntos con los componentes indy, pero me interesaria saber de que manera puedo borrar los mensajes en el servidor una vez recibidos. Para recibir utilizo el componente idPOP3 y delphi 7, inserto el código que utilizo
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
    n,   nummsgs    : integer;
  x:integer;
 begin
    Memo1.Lines.Clear;
 //Conectamos!
  idpop31.Connect(0);
  //Obtenemos el numero de emails que tenemos
 NumMsgs:=idpop31.CheckMessages;
    Memo1.lines.add( 'Emails:' +IntToStr(NumMsgs) );
    for n:=1 to NumMsgs do begin
           idpop31.Retrieve(n,mail);
           for x:=0 to Pred( mail.MessageParts.Count) do
         begin
            if (mail.MessageParts.Items[x] is TIdAttachment) then
           begin // si es attchamente lo guardo
               Memo1.Lines.Add( TIdAttachment( mail.MessageParts.Items[x]).Filename);
               TIdAttachment(mail.MessageParts.Items[x]).SaveToFile(ExtractFilePath(GetModuleName(hInstance)) +
               TIdAttachment(mail.MessageParts.Items[x]).Filename);
               end;
           next;
           end;

            idpop31.RetrieveHeader(n,mail);
     Memo1.Lines.Add( 'Email Nº:'+IntToStr(n)+' De:'+mail.From.Text+' Tema:'+mail.Subject );
     mail.Clear;
   end;
   idpop31.Disconnect;

   end;
espero me den un dato como para saber donde seguir. Gracias
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #2  
Antiguo 31-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Ojalá esté equivocado pero para mí tengo que depende del Servidor el mantener una copia del mensaje o no hacerlo. Desde el Cliente lo más que se puede hacer (y ojalá me equivoque, ya digo) es marcar un mensaje para ser borrado. Pero es el Servidor el que lo borra, efectivamente, o mantiene una copia del mismo...

Ahora bien, ¿no es esto una contradicción? Porque si el Cliente pide borrar un mensaje... pero claro, también puede ser una "feature" por parte del Servidor. De hecho hay Servidores que borrarán el mensaje, y los hay como Gmail, por ejemplo, que permiten al usuario especificar en las opciones si han de mantenerse copias de los mensajes que se borren desde Clientes.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 31-01-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
A mi juicio es el cliente quien debe borrarlos.

Aquí te dejo un ejemplo que utilizo para borrar.

Código Delphi [-]
procedure TFormPOP3.DeleteMails(msgnums : array of integer);
Var I : Integer;
begin
if FBussy then exit;

FBussy := True;
  try
      Screen.Cursor := crHourGlass;
      Application.ProcessMessages;

  with POP3 do
  Begin
    if Connected then  Disconnect;
    Connect(10000);

    for i := Low(msgnums) to High(msgnums) do
    Delete(msgnums[i]);
  End;


Finally
pop3.Disconnect;
FBussy := False;
End;

Yo particularmente dejo que sea el usuario quien realice este proceso, así me evito tener que guardar los mensajes leídos en ningún sitio, sino que permanecen en el servidor hasta que el usuario los borra.
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #4  
Antiguo 31-01-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por dec
Hola,
Desde el Cliente lo más que se puede hacer (y ojalá me equivoque, ya digo)
Si, creo que no estás en lo cierto

Cita:
Empezado por dec
De hecho hay Servidores que borrarán el mensaje
Cuando, en que momento decide el servidor que un mensaje ha de ser borrado...
¿Cuando es accedido? y si el cliente tuvo un fallo de recepción

__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #5  
Antiguo 31-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver si nos estamos confundiendo... yo me refiero al "cliente" no como a quien usa el programa para gestionar su correo, sino al propio programa que gestiona el correo.

Es el cliente (programa que gestiona el correo, y, obviamente, por petición del usuario) quien marca para borrar un determinado email y es el Servidor quien se encarga de su borrado.

Ahora, si en el Servidor está configurada la opción de mantener una copia de los mensajes (si no recuerdo mal así lo hace Gmail), el Servidor no borrará los correos que se marquen para ser borrados desde un cliente "pop", en este caso.

¿Y porqué no aparecen una y otra vez los correos en el programa/cliente si estos no llegan a borrarse? Pues no estoy muy puesto en estos temas, pero, puede que el programa/cliente no descarge mensajes "marcados para ser borrados", simplemente.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 31-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quizá esto aclare un poco la situación:

Cita:
Empezado por Post Office Protocol

DELE msg

Arguments:
a message-number (required) which may NOT refer to a
message marked as deleted

Restrictions:
may only be given in the TRANSACTION state

Discussion:
The POP3 server marks the message as deleted. Any future
reference to the message-number associated with the message
in a POP3 command generates an error. The POP3 server does
not actually delete the message until the POP3 session
enters the UPDATE state.
may only be given in the TRANSACTION state
// Saludos
Responder Con Cita
  #7  
Antiguo 31-01-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Cita:
Empezado por dec
Hola,
A ver si nos estamos confundiendo... yo me refiero al "cliente" no como a quien usa el programa para gestionar su correo, sino al propio programa que gestiona el correo.
Quizás hubiera sido más apropiado decir "usuario" o "programa cliente"
Valga la aclaración

Cita:
Empezado por dec
Ahora, si en el Servidor está configurada la opción de mantener una copia de los mensajes (si no recuerdo mal así lo hace Gmail), el Servidor no borrará los correos que se marquen para ser borrados desde un cliente "pop", en este caso.
Es la opción lógica

Cita:
Empezado por dec
¿Y porqué no aparecen una y otra vez los correos en el programa/cliente si estos no llegan a borrarse? Pues no estoy muy puesto en estos temas, pero, puede que el programa/cliente no descarge mensajes "marcados para ser borrados", simplemente.
Es to último es posible, pero en todo caso es el programa cliente quien los marca y no el servidor a "motu propio".
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #8  
Antiguo 31-01-2007
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Muchas gracias por contestar, pero no entiendo bien ya que soy novato en esto. A ver si es correcto, msgnums es un array con los nros de identificacion de los mensajes en el server?, si es asi, los obtengo con mail.msgid en mi caso? otra, que es fbussy?
Ademas para la discusión anterior, esto dice la ayuda de delphi sobre pop3.delete
Cita:
Messages marked for deletion on the POP3 server will be physically removed when Disconnect is called.
__________________
De lo que hay no falta nada!!!
Responder Con Cita
Respuesta



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
Copia de tablas como copia de seguridad Mathom Varios 4 04-01-2006 09:19:57
¿Recibir mail con MailClient de las Indy con SSL? NPIdea Internet 0 25-11-2005 09:05:10
Copia de seguridad y restablecer copia en paradox Sayuri Conexión con bases de datos 4 30-08-2005 17:08:37
Borrando con DBX brandolin Conexión con bases de datos 0 21-10-2004 07:17:56
recibir e-mail rex Varios 4 04-12-2003 23:39:27


La franja horaria es GMT +2. Ahora son las 20:42:10.


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