Array
(
)

Idpop3 não apaga a msg

Scopyon
   - 07 nov 2005

ola amigos,

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


Massuda
   - 07 nov 2005

Você poderia postar aqui seu código?


Scopyon
   - 07 nov 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);
IdPOP31.Delete(strtoint(xEmail.Strings[x]));
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;


Massuda
   - 09 nov 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.