Idpop3 não apaga a msg

07/11/2005

ola amigos,

como eu faço para deleta o email pq eu uso a função idpop31.delete(msn) ele ñ deleta. :roll:


Scopyon

Respostas

07/11/2005

Massuda

Você poderia postar aqui seu código?


Responder Citar

07/11/2005

Scopyon

procedure TfrmReceberMatrizFilial.bReceberClick(Sender: TObject);
var Diretorio : Array[0..200] of Char;
x : Integer;
xEmail : TStringList;
vChave, FileName: String;
begin
xEmail :=TStringlist.Create;
if not frmPrincipal.Pergunta(´Deseja realmente receber transferencia ?´, ´´, ´´) then
exit;

StrPCopy(Diretorio, DiretorioAplicacao + ´CAIXAENTRADA´);
if not DirectoryExists(DiretorioAplicacao + ´CAIXAENTRADA´) then
CreateDirectory(Diretorio, nil);

ResetaLeds;
ZapFiles(DiretorioAplicacao + ´CAIXAENTRADA\*.*´);
ArquivoINI:=DiretorioAplicacao + ´CAIXAENTRADA\ENVIOMATRIZ.INI´;

bReceber.Enabled:=False;

vrTransf.Value:=0;
VrTotal.Value :=0;
if rgEnvio.ItemIndex = 1 then begin
AniEmail.Visible:=True;
AniEmail.Animate:=True;
frmReceberMatrizFilial.Refresh;

IdPOP31.Host :=frmPrincipal.Cli_HostEmail;
IdPOP31.Username :=frmPrincipal.Cli_UsuEmail;
IdPOP31.Password :=frmPrincipal.Cli_SenhaEmail;
Try
IdPOP31.Connect();
if IdPOP31.Connected then
begin
for x:=1 to IdPOP31.CheckMessages do
begin
IdPOP31.Retrieve(x,IdMessage1);
if copy(Trim(IdMessage1.Subject),1,32) = ´Transferencia de Dados da Matriz´ then
begin
VrTotal.Value:=VrTotal.Value+1;
xEmail.Add(IntToStr(x));
end;
end;
end;
except
on ESockError do begin
frmPrincipal.Mensagem(´ERRO´,´Não foi possível conectar´,´ao servidor de e-mail!´,´Verifique Conexão!´);
end;
end;
if IdPOP31.Connected then IdPOP31.Disconnect;

if xEmail.Count = 0 then
frmPrincipal.Mensagem(´AVISO´,´Não existe transferências na´,´sua caixa de correio.´,´Verifique mais tarde!´)
else begin
IdPOP31.Host :=frmPrincipal.Cli_HostEmail;
IdPOP31.Username :=frmPrincipal.Cli_UsuEmail;
IdPOP31.Password :=frmPrincipal.Cli_SenhaEmail;
IdPOP31.Connect;
for x:=0 to xEmail.Count-1 do
begin
ResetaLeds;
gMensagem.Visible:=True;
vrTransf.Value :=vrTransf.Value + 1;
Refresh;
Try
if IdPOP31.Connected then
begin
IdMessage1.Clear;
IdPOP31.Retrieve(strtoint(xEmail.Strings[x]) ,IdMessage1);
if(IdMessage1.MessageParts.Items[1] is TIdAttachment) then
begin
FileName:=DiretorioAplicacao+´CAIXAENTRADA\´+TIdAttachment(IdMessage1.MessageParts.Items[1]).FileName;
TIdAttachment(IdMessage1.MessageParts.Items[1]).SaveToFile(FileName);
end;
if IdMessage1.MessageParts.Items[1] is TIdText then
begin
ObsEmail.Lines.Add(TIdText(IdMessage1.MessageParts.Items[1]).Body.Text);
end;
ReceberDados(FileName);
[[color=blue:ff98c8a9ad]b]IdPOP31.Delete(strtoint(xEmail.Strings[x]));[/b][/color:ff98c8a9ad]
ObsEmail.Lines.Clear;
end;
except
on ESockError do begin
frmPrincipal.Mensagem(´ERRO´,´Não foi possível conectar´,´ao servidor de e-mail!´,´Verifique Conexão!´);
break;
end;
end;
Sleep(1000);
end;
if IdPOP31.Connected then IdPOP31.Disconnect;
end;
AniEmail.Visible:=False;
AniEmail.Animate:=False;
end else begin
if rgEnvio.ItemIndex = 0 then
OpenDialog.InitialDir:=´A:\´
else
OpenDialog.InitialDir:=DiretorioAplicacao+´RECEBEDADOS´;
OpenDialog.Execute;
if Trim(OpenDialog.FileName) <> ´´ then begin
vrTransf.Value:=1;
VrTotal.Value:=1;
ReceberDados(OpenDialog.FileName);
end;
end;
xEmail.Free;
VrTotal.Value :=0;
vrTransf.Value :=0;
gMensagem.Visible:=False;
bReceber.Enabled :=True;
ResetaLeds;
UltimoReceb;
end;


Responder Citar

09/11/2005

Massuda

Aparentemente deveria funcionar, embora eu ache que seu código poderia ser um pouco mais simples. Experimente apagar as mensagens depois de ler todas as mensagens (se não me engano, é assim que os programas de email geralmente fazem) ao invés de ir apagando as mensagens a medida que faz a leitura.


Responder Citar