1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80:
| procedure TForm1.Mailsprfen1Click(Sender: TObject); var AnzahlMail,AnzahlAnhang,i,neu : Integer; IdMessage1 : TIdMessage; Dateiname,Pfad,Zeitstempel : String; begin i := 0; neu := 0;
init;
POP.Host := 'pop.gmx.net'; POP.Connect;
Pfad := ExtractFilePath(ParamStr(0)) + 'Mail-Anhang\'; if not DirectoryExists(Pfad) then CreateDir(Pfad);
StatusBar1.Panels[0].Text := ' Posteingang wird geprüft ...'; for AnzahlMail := 1 to POP.CheckMessages do begin StatusBar1.Panels[1].Text := ' Mail: ' + IntToStr(AnzahlMail) + ' / ' + IntToStr(POP.CheckMessages); StatusBar1.Panels[2].Text := ' Gefunden: ' + IntToStr(i); Application.ProcessMessages;
IdMessage1 := TIdMessage.Create(Self); POP.Retrieve(AnzahlMail, IdMessage1); if IdMessage1.MessageParts.Count > 0 then begin for AnzahlAnhang := 0 to IdMessage1.MessageParts.Count - 1 do begin if (IdMessage1.MessageParts.Items[AnzahlAnhang] is TIdAttachment) then begin Dateiname := TIdAttachment(IdMessage1.MessageParts.Items[AnzahlAnhang]).Filename; if (ExtractFileExt(Dateiname) = '.xlsx') or (ExtractFileExt(Dateiname) = '.xls') then begin if MsgID_pruefen(IdMessage1.MsgId) then begin MsgID_schreiben(IdMessage1.MsgId);
neu := neu + 1;
Zeitstempel := FormatDateTime('ddmmyyyyhhnnss', Now); Pfad := ExtractFilePath(ParamStr(0)) + 'Mail-Anhang\' + Zeitstempel + '_' + Dateiname;
TIdAttachment(IdMessage1.MessageParts.Items[AnzahlAnhang]).SaveToFile(Pfad); end;
i := i + 1;
StringGrid1.Cells[0,i] := IdMessage1.MsgId; if UploadID_pruefen(IdMessage1.MsgId) then StringGrid1.Cells[1,i] := '1'; StringGrid1.Cells[3,i] := DateToStr(IdMessage1.Date); StringGrid1.Cells[4,i] := UTF8ToAnsi(IdMessage1.Subject); StringGrid1.Cells[5,i] := UTF8ToAnsi(IdMessage1.From.Text); StringGrid1.Cells[6,i] := Dateiname; end; end; end; end; IdMessage1.Free; end;
if i > 0 then begin SetHeader; AutoSetAnzeige(StringGrid1); end;
if neu = 1 then StatusBar1.Panels[0].Text := IntToStr(neu) + ' neue Meldung' else StatusBar1.Panels[0].Text := IntToStr(neu) + ' neue Meldungen'; StatusBar1.Panels[1].Text := ''; StatusBar1.Panels[2].Text := '';
POP.Disconnect; end; |