Idpop3 não apaga a msg

Delphi

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

Scopyon

Curtidas 0

Respostas

Massuda

Massuda

07/11/2005

Você poderia postar aqui seu código?


GOSTEI 0
Scopyon

Scopyon

07/11/2005

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;


GOSTEI 0
Massuda

Massuda

07/11/2005

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.


GOSTEI 0
POSTAR