Suppression mail

xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006 - 13 févr. 2006 à 17:00
cilmarseille Messages postés 15 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 13 février 2006 - 13 févr. 2006 à 23:57
Petite question toute bête.

Est ce que quelqu'un saurait comment faire pour supprimer un e-mail directement sur un serveur pop?

D'après mes recherches, l'instruction idpop3.delete(numéro_du_mail) devrait faire l'affaire mais je ne parviens pas à supprimer les mails.

Voici mon script, il permet de récupérer les e-mail sur un serveur pop
contenant des logs de firewall puis il traite les logs en retenant que
les attaques que reçoient le firewall et réexpédie le tout sous forme
d'e-mail.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdPOP3, IdSMTP;

type
TForm1 = class(TForm)
IdPOP31: TIdPOP3;
IdMessage1: TIdMessage;
Memo1: TMemo;
Memo2: TMemo;
IdSMTP1: TIdSMTP;
procedure FormCreate(Sender: TObject);

private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses
IniFiles, FileUtil, Ucommun;

procedure TForm1.FormCreate(Sender: TObject);

var

MAIL,email,i,j,k,nbmel,melport2,NoLg1,NoLg2 : Integer;
Msg : TIdMessage;
senders,sandy,mel,melrep,melserv,melsuj,host,userid,pass,melport : string;
inifile : TIniFile;
liststr,liststr2 : TStringList;

begin

inifile := TIniFile.Create(NormalDir(ExtractFilePath(Application.ExeName)) + 'firewall.ini');
host := inifile.ReadString('POP','Host','');
userid := inifile.ReadString('POP','UserId','');
pass := inifile.ReadString('POP','Password','');
mel := inifile.ReadString('Mail', 'meldest','');
melrep := inifile.ReadString('Mail', 'melrep','');
melsuj := inifile.ReadString('Mail', 'melsujet','');
melport := inifile.ReadString('Mail', 'smtpport','');
melserv := inifile.ReadString('Mail', 'smtpserver','');
ListStr := TStringList.Create;
StringToTstringList(inifile.ReadString('Erreur','err',''), ListStr, ':');
ListStr2 := TStringList.Create;
StringToTstringList(inifile.ReadString('Erreur','pyld',''), ListStr2, ':');
inifile.Free;

IdPOP31.Host := host;
IdPOP31.UserId := userid;
IdPOP31.Password := pass;
IdPOP31.Connect;

nbmel := idpop31.CheckMessages;
ShowMessage(IntToStr(nbmel));

For MAIL := 1 to nbmel -1 do begin
msg := TIdMessage.Create(self);
idpop31.Retrieve(MAIL,msg);
idpop31.RetrieveHeader(MAIL,Msg);
senders := (Msg.From.Text);
For email := 1 to nbmel -1 do begin
msg := TIdMessage.Create(self);
idpop31.Retrieve(email,msg);
idpop31.RetrieveHeader(email,Msg);
sandy := (Msg.From.Text);
If senders = sandy then begin
if Msg.MessageParts.Items[0] is TIdText then begin


Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[0]).Body);
end;
end;
end;

for i := 0 to Memo1.Lines.Count -1 do begin
for j := 0 to ListStr.Count -1 do begin
for k := 0 to ListStr2.Count -1 do begin


if (pos(ListStr[j],Memo1.Lines[i])>0) then begin


Memo2.Lines.Add(UpperCase(senders));


Memo2.Lines.Append(' ==> ' + Memo1.Lines[i]);
end;


if (pos(ListStr2[k],Memo1.Lines[i])>0)then begin


Memo2.Lines.Add(UpperCase(senders));


Memo2.Lines.Append(' ==> ' + Memo1.Lines[i -
1]);


Memo2.Lines.Append(' ' +
Memo1.Lines[i]);
end;
end;
end;
end;
IdPOP31.Delete(MAIL);
end;

//Suppression des doublons
NoLg1 : = 0;
NoLg2 := NoLg1 + 1;
Memo2.Lines.BeginUpdate;

While NoLg1 <= (Memo2.Lines.Count - 2) do Begin
While (NoLg2 <= (Memo2.lines.Count - 1)) do Begin
If Memo2.Lines.Strings[NoLg1] = Memo2.Lines.Strings[NoLg2] then
Memo2.Lines.Delete(NoLg2)
else
Inc(NoLg2);
end;
Inc(NoLg1);
NoLg2 := NoLg1 + 1;
End;
Memo2.Lines.EndUpdate;

IdMessage1 := TIdMessage.Create(nil);
IdMessage1.From.Address :=melrep;//senders; //@ émetteur
IdMessage1.ReplyTo.Add.Address :=senders; //@ de réponse et / ou destinataire
IdMessage1.Recipients.Add.Address := mel;
IdMessage1.Subject := melsuj; //Sujet du message
IdMessage1.ContentType := 'text/plain'; // Message texte
IdMessage1.Body := Memo2.Lines; //corps du message

//Envoi du message
IdSMTP1 := TIdSMTP.Create(nil);
melport2 := StrToInt(melport);
IdSMTP1.Port := melport2; //port smtp
IdSMTP1.Host := melserv; //serveur smtp

//Connexion et envoi du message
if (Memo2.Lines.Count) <> 0 then begin
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
IdSMTP1.Free;
IdMessage1.Free;
end;
msg.Free;
Application.terminate;
end;
end.

2 réponses

xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006
13 févr. 2006 à 17:45
Personne n'a d'idée?
0
cilmarseille Messages postés 15 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 13 février 2006 1
13 févr. 2006 à 23:57
Salut,

La syntaxe de suppression des mails est bien la bonne. Je pense seulement qu'il y a un méli mélo dans tes boucles...

Cilmarseille
0
Rejoignez-nous