Autor Beitrag
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Di 20.05.08 11:22 
Hi,

hier ein winzig kleines Projekt, dass ich schon vor langem mal gemacht habe.

Aufgabe:
Startet man das Programm, gibt es die Mails im Posteingang an.

Dateistruktur:
Das Programm besteht aus 3 Dateien:
MailChecker.exe
MC-Dates.txt Datei für Accountzugänge
MC-Spam.txt Datei für Spam-Filter

alle Dateien müssen im gleichen Ordner liegen

ausblenden MC-Dates.txt
1:
2:
3:
4:
5:
6:
7:
8:
9:
pop3.web.de    //Host
110              //Port
Max_Mustermann   //UserName
MyPassword       //Password
pop3.web.de      //Host
110              //Port
Arno_Nymous      //UserName
ArnosPasswort   //Password
[...]


ausblenden MC-Spam.txt
1:
2:
3:
web.de informiert //web.de Spam
web.de hilft //
[...]



Spam-Filter:
Der SpamFilter meldet, falls ein in "MC-Spam.txt" angegebener Text gefunden wurde. Es folgt eine Nachfrage, ob diese Mail gelöscht werden soll.

Source-Code:
ausblenden volle Höhe Delphi-Quelltext
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:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    NMPOP3: TIdPOP3;
    IdMessage1: TIdMessage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type TEmail=record
  Host,Port,UserName,Password: String;
end;

var
  Form1: TForm1;
  EMail: array of TEmail;
  Spam: array of String;


implementation

{$R *.dfm}


function ExtractPath (Path:String) : String;
begin
Result:='';
while Length(Path)>0 do
  begin
    Result:=Result+Copy(Path,1,Pos('\',Path));
      if Pos('\',Path)=0 then
        Path:='';

    Delete(Path,1,Pos('\',Path));
  end;
end;

procedure LoadDates;
var TextFile: Text;  S: string;  A: integer;
begin
 Assign(TextFile,ExtractPath(Application.ExeName)+'MC-Dates.txt');
 Reset(TextFile);
 A:=0;
 while not EoF(TextFile) do
   begin
     SetLength(EMail,A+1);
     ReadLn(TextFile,S);
     EMail[A].Host:=Trim( Copy( S, 1,Pos('//',S)-1 ) );
     ReadLn(TextFile,S);
     EMail[A].Port:=Trim( Copy( S, 1,Pos('//',S)-1 ) );
     ReadLn(TextFile,S);
     EMail[A].UserName:=Trim( Copy( S, 1,Pos('//',S)-1 ) );
     ReadLn(TextFile,S);
     EMail[A].Password:=Trim( Copy( S, 1,Pos('//',S)-1 ) );    
     A:=A+1;
   end;
 Close(TextFile);

 Assign(TextFile,ExtractPath(Application.ExeName)+'MC-Spam.txt');
 Reset(TextFile);
 A:=0;
 while not EoF(TextFile) do
   begin
     SetLength(Spam,A+1);
     ReadLn(TextFile,S);
     Spam[A]:=Trim( Copy( S, 1,Pos('//',S)-1 ) );
     A:=A+1;
   end;
 Close(TextFile);
end;


procedure TForm1.FormCreate(Sender: TObject);
var countMails: integer; Deleted: boolean;  A,B,C: integer;  S,OutPut: string;
begin
try

 OutPut:='';
 Application.ShowMainForm:=False;
 if FileExists(ExtractPath(Application.ExeName)+'MC-Dates.txt'then
  begin
   LoadDates;
   for A:=0 to Length(EMail)-1 do
    begin
     S:='';
     NMPOP3.Host := EMail[A].Host;
     NMPOP3.Port := strtoint(EMail[A].Port);
     NMPOP3.UserName := EMail[A].UserName;
     NMPOP3.Password := EMail[A].Password;
     NMPOP3.Connect;                 
     countMails := NMPOP3.CheckMessages;
     for B:= 1 to countMails do
      begin      
       Deleted:=False;
       NMPOP3.RetrieveHeader(B, Form1.IdMessage1);
       for C:= 0 to Length(Spam)-1 do
        if Pos(Spam[C],ansilowercase(Form1.IdMessage1.From.Text))>0 then
          if MessageDlg('Spam ('+Form1.IdMessage1.Subject+' von '+Form1.IdMessage1.From.Text+') löschen?',mtInformation,[mbYes,mbNo],0)=mrYes then
           begin
            NMPOP3.Delete(B);
            Deleted:=True;
           end;

       if Deleted=False then

        S:=S+' -'+IdMessage1.Subject+' ('+Form1.IdMessage1.From.Text+')'+#13;
      end;

     countMails := NMPOP3.CheckMessages;
     OutPut:=OutPut+EMail[A].UserName+': '+inttostr(NMPOP3.CheckMessages)+#13;
     OutPut:=OutPut+S;

     NMPOP3.DisConnect;
     end
   end
 else
  ShowMessage('Datei nicht gefunden: MC-Dates.txt');

 if Trim(OutPut)<>'' then
  ShowMessage(OutPut);
except
 ShowMessage('Es ist ein Fehler bei der Verbindung aufgetreten. Überprüfen Sie Ihre Angaben!');
end;


 Application.Terminate;
end;

end.


Anmerkung:
Da die Daten im Klartext vorliegen, ist dieses Programm nicht sonderlich sicher. Ich weiß, es wäre überhaupt kein Problem, das zu verschlüsseln, aber ich hab atm keine Zeit und für mich persönlich ist das auch ziemlich uninteressant. Aber da es open Source ist, könnt ihr gerne etwas am Code rumbauen. Diese Version im 1.Post ist jedoch die offizielle von mir. Für andere bin ich nicht verantwortlich.

Das Programm ist schon seit Jahren im Einsatz und funktioniert einwandfrei (Win 2k und Win XP).
Einloggen, um Attachments anzusehen!
_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 20.05.08 18:55 
Was ist daran jetzt klein?
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Di 20.05.08 18:57 
user profile iconLuckie hat folgendes geschrieben:
Was ist daran jetzt klein?


das Formular ;-)

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 21.05.08 00:53 
user profile iconZeitGeist87 hat folgendes geschrieben:
user profile iconLuckie hat folgendes geschrieben:
Was ist daran jetzt klein?


das Formular ;-)


Ha,ha. Das Formular ist bei mir RIESIG (höher als die Bildschirmhöhe !!!), weil es ALLE Emails anzeigt - nicht nur die ungelesenen, wie ich es erwartet hätte...
Wie kann man das filtern?

Eine UTF-Konvertierung wäre auch nicht schlecht!

So sollte es sein:
Einloggen, um Attachments anzusehen!
Der nette Nachbar
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 67

Win XP, Suse Linux 9.3
Delphi 7, Delphi 2007, Borland C++ Builder 6, Java Builder 7
BeitragVerfasst: Mi 21.05.08 08:58 
Eigentlich ist das DIng gerade mal hingeklatscht, kaum irgentwelche Absicherung oder sonst was.
Völlig anfällig auf Fehler, kaum was stimmt nicht schon klappt es nicht. Keine Fehlermeldungen, von Korrekturen schon gar nicht zu sprechen.
Also ne Arbeit von etwa ner halben Stunde für einen fähigen Progger
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mi 21.05.08 09:08 
damals war ich noch kein fähiger progger :lol: ich versteh garnicht was ihr alle macht, bei mir gehts prima...ok, ich verwende parallel Thunderbird, der löscht ja die Mails aufm Server, wenn ich sie abrufe. Früher hab ich immer die Mails gelöscht oder sie ins Archiv geschoben.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Der nette Nachbar
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 67

Win XP, Suse Linux 9.3
Delphi 7, Delphi 2007, Borland C++ Builder 6, Java Builder 7
BeitragVerfasst: Mi 21.05.08 11:26 
Also wenn ich mir dein Programm so anschaue, hat es eine gewisse Ähnlichkeit mit Microsoft, im Hause klappt alles, draussen nur Fehlermeldungen und Abstürze.
Bewerbe dich mal bei MS, die werden dich sich mit offenen Armen empfangen und gleich ein Chef Entwickler Gehalt anbieten. xD
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mi 21.05.08 13:12 
user profile iconDer nette Nachbar hat folgendes geschrieben:

Bewerbe dich mal bei MS, die werden dich sich mit offenen Armen empfangen und gleich ein Chef Entwickler Gehalt anbieten. xD

boah wie fies :evil:

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Der nette Nachbar
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 67

Win XP, Suse Linux 9.3
Delphi 7, Delphi 2007, Borland C++ Builder 6, Java Builder 7
BeitragVerfasst: Mi 21.05.08 13:22 
user profile iconDer nette Nachbar hat folgendes geschrieben:
user profile iconXion hat folgendes geschrieben:
user profile iconDer nette Nachbar hat folgendes geschrieben:

Bewerbe dich mal bei MS, die werden dich sich mit offenen Armen empfangen und gleich ein Chef Entwickler Gehalt anbieten. xD

boah wie fies :evil:

Nimm es nicht so schwer...jeder fängt mal klein an xD