Entwickler-Ecke

Internet / Netzwerk - Proxy mit Indy Kompos?? WICHTIG


Akut-Programming - Mo 18.08.03 12:31
Titel: Proxy mit Indy Kompos?? WICHTIG
Ma noch n Thread von mir!

Hab jetzt herausgefunden, warum ich keine Verbindung zum smtp Server bekomme. Ich muss noch über n Proxy kommen. Nur leider hab ich bei meinen Indy9 Kompos keine Proxy Komponente gefunden. Gibts die Möglichkeit mit den Indys überhaupt!?


MSCH - Mo 18.08.03 21:52

Sprech doch den Proxy direkt statt dem SMTP Server an.
grez
msch


Akut-Programming - Di 19.08.03 07:48

Moin!

MSCH hat folgendes geschrieben:
Sprech doch den Proxy direkt statt dem SMTP Server an.


:?: Wie meinst du das? So wie ich das jetzt verstehe, meinst du ich sollte anstatt den SMTP Server über den die Mails versendet werden sollen (in meinem Fall sollte dies über GMX geschehen), den Proxy einzutragen?

:lol: Mein Anliegen: :lol:

Ich will ein Programm schreiben, das die Mails des internen Mailservers abholt und diese dann über einen anderen account (z.B. GMX) wieder versendet. DAS MUSS DOCH MÖGLICH SEIN


Akut-Programming - Di 19.08.03 09:09

Also hab da jetzt ma noch n bissl probiert! Aber es will nich so wie ich will. Ich hab mir ma n bissl Code..da könnters euch ma angucken!


unit1--->Zeigt Startfenster und führt ersten durchlauf aus

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:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ed_start: TButton;
    ed_end: TButton;
    Label1: TLabel;
    procedure ed_startClick(Sender: TObject);
    procedure ed_endClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2, Unit3;

{$R *.DFM}

procedure TForm1.ed_startClick(Sender: TObject);
var i: integer;
begin
     Form2.Show;
     Form1.Hide;

     Form3.Memo1.Lines.Add(DateToStr(Now)+' '+TimeToStr(NOW)+' '+'Anwendung gestartet');
     Form3.Memo1.Lines.Add('');
     Form3.Memo1.Lines.SaveToFile('logfile.txt');

     Form2.IdPOP31.Connect;
     Form2.Label3.Caption:=IntToStr(Form2.IdPOP31.CheckMessages);

     Form3.Memo1.Lines.Add(DateToStr(Now)+' '+TimeToStr(NOW)+' '+'Neue Mails: '+IntToStr(Form2.IdPOP31.CheckMessages)+'');
     Form3.Memo1.Lines.Add('');
     Form3.Memo1.Lines.SaveToFile('logfile.txt');

//Start --> Mails abholen und versenden

  for i:=0 to Form2.IdPOP31.CheckMessages do
    begin
     Form2.IdPOP31.Retrieve(i, Form2.IdMessage1);
      Form2.IdSMTP1.Connect;
       try
        form2.IdSMTP1.Send(Form2.IdMessage1);
       finally
        form2.IdSMTP1.Disconnect;
        Form2.Timer1.Enabled:=True;
       end;
    end;
end;
//Ende --> Mails abholen und versenden

procedure TForm1.ed_endClick(Sender: TObject);
begin
     Form1.Close;
end;


unit2--->Prog Arbeitet nun durch Timer in gewissen Zeitabständen

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:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  IdMailBox, IdBaseComponent, IdNetworkCalculator, StdCtrls, ExtCtrls,
  IdMessage, IdSMTP, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdPOP3, IdIntercept, IdLogBase, IdLogFile,
  IdMessageCoder, IdMessageCoderMIME, IdAntiFreezeBase, IdAntiFreeze,
  IdHTTP, ScktComp;
type
  TForm2 = class(TForm)
    Label1: TLabel;
    ed_logfile: TButton;
    ed_beenden: TButton;
    IdPOP31: TIdPOP3;
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    Bevel1: TBevel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    IdAntiFreeze1: TIdAntiFreeze;
    Timer1: TTimer;
    procedure ed_logfileClick(Sender: TObject);
    procedure ed_beendenClick(Sender: TObject);
    procedure IdPOP31Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
    procedure IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

uses Unit1, Unit3;

{$R *.DFM}

procedure TForm2.ed_logfileClick(Sender: TObject);
begin
     Form3.Show;
end;

procedure TForm2.ed_beendenClick(Sender: TObject);
begin
     IdPOP31.Disconnect;
     IdSMTP1.Disconnect;
     Form3.Memo1.Lines.Add(DateToStr(Now)+' '+TimeToStr(NOW)+' '+'Anwendung beendet');
     Form3.Memo1.Lines.Add('');
     Form3.Memo1.Lines.SaveToFile('logfile.txt');
     Form1.Close;
end;

procedure TForm2.IdPOP31Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
     Label4.Caption:=AStatusText;
     Form3.Memo1.Lines.Add(DateToStr(Now)+' '+TimeToStr(NOW)+' '+'pop3 - Status: '+AStatusText+'');
     Form3.Memo1.Lines.Add('');
     Form3.Memo1.Lines.SaveToFile('logfile.txt');
end;


procedure TForm2.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
     Label4.Caption:=AStatusText;
     Form3.Memo1.Lines.Add(DateToStr(Now)+' '+TimeToStr(NOW)+' '+'SMTP - Status: '+AStatusText+'');
     Form3.Memo1.Lines.Add('');
     Form3.Memo1.Lines.SaveToFile('logfile.txt');
end;


procedure TForm2.Timer1Timer(Sender: TObject);
var i:integer;
begin
     IdPOP31.Disconnect;
     IdPOP31.Connect;
     Label3.Caption:=IntToStr(Form2.IdPOP31.CheckMessages);

     Form3.Memo1.Lines.Add(DateToStr(Now)+' '+TimeToStr(NOW)+' '+'Neue Mails: '+IntToStr(Form2.IdPOP31.CheckMessages)+'');
     Form3.Memo1.Lines.Add('');
     Form3.Memo1.Lines.SaveToFile('logfile.txt');

//Start --> Mails abholen und versenden

  for i:=0 to IdPOP31.CheckMessages do
    begin
     IdPOP31.Retrieve(i, IdMessage1);
      IdSMTP1.Connect;
       try
        IdSMTP1.Send(IdMessage1);
       finally
        IdSMTP1.Disconnect;
       end;
    end;
//Ende --> Mails abholen und versenden
end;

------------------------------------------------------------------------
Wenn ich dies so mache, bekomme ich da ich über einen Proxy muss, immer die Meldung "Connection Timeout". Versteht ihr mein Anliegen? Liege ich mit dem Source daneben???


MSCH - Di 19.08.03 20:29

ich glaube hier fehlt noch etwas verständnis, was ein Proxy macht. Ein SMTP-Proxy arbeitet genauso wie ein HTTP Proxy, sprich der Webbrowser fordert seine Seiten vom Proxy und nicht von der eigentlichen URL ab. Das besorgt der Proxy. Genauso verhält es sich mit einem SMTP Proxy (kann auch als Relay und Filter missbraucht werden). der Client fordert nicht mehr direkt beim Zielhost an, sondern via Proxy.

grez
msch