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

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
  #9  
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,

Cita:
Empezado por Román
Quizá esto aclare un poco la situación:
Huy... pues no sé yo Román. Es lo que estamos diciendo: los mensajes se marcan para ser borrados, pero, que el Servidor los borre o no en última instancia... depende del Servidor (y de sus opciones) y poco podemos hacer para borrar correos "sin apelación" desde el programa/cliente. O existe una forma, pero, no parece que sea la que estamos comentando aquí (usar en última instancia el comando "DELE" del protocolo "POP3").

Cita:
Empezado por fedelphi
A ver si es correcto, msgnums es un array con los nros de identificacion de los mensajes en el server?
Hum... tal vez te refieras a "MsgNum", que ha de ser pasado como parámetro en métodos como "Retrieve" del componente "TIdPop3". "MsgNum" indica el número de mensaje sobre el que queremos trabajar, por ejemplo en el método "Retrieve" indica el número de mensaje que queremos recuperar del Servidor.

Cita:
Empezado por fedelphi
si es asi, los obtengo con mail.msgid en mi caso?
Los obtienes con "Retrieve". Indicas como parámetro el número de correo a recuperar y una variable de tipo "TIdMessage" en que albergar los datos del correo recuperado. De todos modos echa un vistazo a los ejemplos de los componentes Indy, concretamente al Cliente de correo que incorpora.

Cita:
Empezado por fedelphi
otra, que es fbussy?
Ay, ay, ay... "fbussy" puede ser una variable de tipo booleano que se use a modo de "bandera" en el código que traes entre manos... me temo que igual que algo parecido a "msgnums", puesto que estos identificadores no se corresponden (que yo sepa) a propiedades de la clase "TIdPop3"...

Cita:
Empezado por fedelphi
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.
En Google traducen "will" por "voluntad"... ignoro si podría traducirse la frase anterior más o menos así: "Los mensajes marcados para ser borrados en el Servidor POP3 serán efectivamente borrados (a voluntad del Servidor) cuando la conexión finalize llamándose al método "Desconectar".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #10  
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á estoy entendiendo mal pero según yo el protocolo es bastante claro:

El cliente manda el comando DELE al servidor para borrar un mensaje, el servidor lo marca como borrado y lo borra hasta que entra al estado UPDATE. Yo pienso que este estado se alcanza siempre en una transacción, está simplemente para no borrar de uno por uno. Pero no veo de dónde es una opción en el servidor la de borrar o no los mensajes. No veo porqué había de ser así, es una opción que fija el usuario via el cliente de POP3 y lo íunico que hace tal opción es instruir al cliente a mandar o no el comando DELE.

Dicho de otra forma: es prerrogativa del cliente mandar o no el comando DELE. Y si se manda, el servidor lo borrará en cuanto pueda.

// Saludos
Responder Con Cita
  #11  
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
Cita:
Empezado por dec
En Google traducen "will" por "voluntad"... ignoro si podría traducirse la frase anterior más o menos así: "Los mensajes marcados para ser borrados en el Servidor POP3 serán efectivamente borrados (a voluntad del Servidor) cuando la conexión finalize llamándose al método "Desconectar".
No, no. Aquí will es el auxiliar del futuro. Si fuera lo que comentas diría at will.

// Saludos
Responder Con Cita
  #12  
Antiguo 04-02-2007
Avatar de cdar
cdar cdar is offline
Registrado
 
Registrado: feb 2006
Posts: 2
Poder: 0
cdar Va por buen camino
Componentes pop3

Hola a todos, estoy empeñado en hacer un cliente de correo, pero en mi delphi 7 no cuento con ningun componente para aplicaciones pop3 ni smtp. Alguien que me pueda ayudar con una liga para bajarlo o que me pueda hacer el favor de pasarmelo. Muchas gracias de ante mano!
Responder Con Cita
  #13  
Antiguo 04-02-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,

Cita:
Empezado por Román
Dicho de otra forma: es prerrogativa del cliente mandar o no el comando DELE. Y si se manda, el servidor lo borrará en cuanto pueda.
Bueno. Pues acaso sea así en teoría. Yo utilizo un programa cliente de correo que gestiona cuentas de correo en Gmail. Cuando yo borro un mensaje desde el programa de correo (que hace uso del protocolo POP3) el mensaje se borra de mi vista, y no vuelve a aparecer si actualizo, es decir, si pregunto al programa de correo si hay correo nuevo... no sé si me explico.

Pero, aunque yo borrase el mensaje de correo desde el programa cliente, lo cierto es que dicho mensaje no se borra del Servidor de Gmail. Es decir, si entro a Gmail mediante un navegador Web puedo ver no sólo los últimos mensajes, sino los que he "borrado" desde el programa cliente de correo. Si se piensa un poco por mucho que haga el cliente es el Servidor quien tiene la última palabra.

Ahora, ya no sé si Gmail se "salta" el protocolo o qué. Pero que lo que digo ocurre lo experimento a diario. Y la prueba es que el compañero que inició este Hilo hubo de encontrarse con esta circunstancia, intuyo, pues lo que pregunta es cómo borrar los mensajes de correo en el Servidor: porque él los borra desde el cliente de correo... pero los mensajes no se borran en el Servidor.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-02-2007 a las 18:42:55.
Responder Con Cita
  #14  
Antiguo 04-02-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,

Cita:
Empezado por cdar
Hola a todos, estoy empeñado en hacer un cliente de correo, pero en mi delphi 7 no cuento con ningun componente para aplicaciones pop3 ni smtp. Alguien que me pueda ayudar con una liga para bajarlo o que me pueda hacer el favor de pasarmelo. Muchas gracias de ante mano!
Echa un vistazo a los componentes Indy y a sus programas "demos".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #15  
Antiguo 06-02-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
GMail se comporta distinto porque no es un servidor pop3 aunque te permita acceder a él como si lo fuera a efectos de descargar el correo. Repito nuevamente, el protocolo es bastante claro.

// Saludos
Responder Con Cita
Respuesta


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
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 10:40:34.


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