![]() |
Mails über pop3/smtp-Protokoll aber...
Hallo.
Und zwar gibt es hier im Forum ja mehrere Threads zu dem Thema "Eigenes Mailprogramm". Jedoch immer nur mit Hilfe der POP3-Komponente von Indy. Jedoch soll ich dies erstmal nur über die normale Client-Komponente versuchen. Wenn ich über Telnet eine Verbindung zum Pop3 server herstelle funktioniert das wunderbar. Jedoch streikt Delphi bereits beim Verbinden. Und zwar kann er nur IP Adressen verarbeiten und keine Adressen wie "pop3.web.de". Daher meine erste Frage: Wie kann ich solch eine Adresse in seine IP Adresse überführen bzw. wie kann Delphi das für mich machen? mfg Cya |
Re: Mails über pop3/smtp-Protokoll aber...
Zitat:
|
Re: Mails über pop3/smtp-Protokoll aber...
Die Unit Winsock stellt die Funktion inet_addr() für diesen Zweck zur Verfügung.
Grüße vom marabu |
Re: Mails über pop3/smtp-Protokoll aber...
Recht herzlichen Dank =)
Und wo finde ich diese Unit ? mfg Cya |
Re: Mails über pop3/smtp-Protokoll aber...
einfach
Delphi-Quellcode:
uses ..., WinSock;
|
Re: Mails über pop3/smtp-Protokoll aber...
Eine Korrektur vorneweg: nicht inet_addr() sondern das Gegenstück inet_ntoa() erzeugt aus einer Netzwerkaddresse die sogenannte dotted notation. Vorher muss noch die Adresse über den Namen ermittelt werden - z.B. mit getaddrinfo(). Die Unit Winsock ist bei meinem D7 mitgeliefert worden. Fehlt sie bei der D7 Personal?
marabu |
Re: Mails über pop3/smtp-Protokoll aber...
WinSock scheint bei mir dabei zu sein. Zumindest gibt er keien fehler beim Compilieren aus, nachdem ich "WinSock" obe bei "uses" eingesetzt habe. Was für ein Datentyp muss inet_addr() denn übergeben werden?
Inzwischen kann ich eien Verbindung zum Pop3 Server herstellen und auch wieder trennen. Jedoch wenn ich wieder eien Verbindung aufbauen will, kurz nach dme ich si egetrennt habe, sagt er: "Adress already in use!" Wenn ich dies jedoch über telnet mache geht es wunderbar. Woran liegt das Oo ? mfg Cya |
Re: Mails über pop3/smtp-Protokoll aber...
Der Socket scheint nicht freigegeben worden zu sein.
|
Re: Mails über pop3/smtp-Protokoll aber...
Zitat:
Ich hab egelesen, dass die verwendeten Socket eig. nach beenidung der Verbindung mit gelöscht werden bzw. deren Inhalt. Jedoch scheint dies bei mir nicht der Fall zu sein. Ich habe Indy Demos mit verschiedenen Projekten. Dort gibt es auch eien funktionsfähigen Client. Bei dem funktioniert jedoch das Connecten und Disconnecten usw. problemlos. Also scheint es was mit dem Programmcode zu tun zu haben. Jedoch sehe ich keinen kravierenden Unterschied zwischen meinem Quellcode und von der Demo. mfg Cya |
Re: Mails über pop3/smtp-Protokoll aber...
Vielliecht können wir die besser Helfen, wenn du und deinen Code zeigst.
|
Re: Mails über pop3/smtp-Protokoll aber...
Also das mit dem schnellen Connecten und Disconnecten usw. funktioniert nun. KA wieso...
Delphi-Quellcode:
Hier werden IP Adresse (bisher ausschließlich reine IP Adresse) und der Port der Client Komponente zugewisen und eien verbindung hergetsellt.
procedure TForm1.Button1Click(Sender: TObject);
begin With IdTCPClient1 Do begin Host:= Eip.Text ; Port:= StrToInt(Eport.Text) ; connect ; end; end;
Delphi-Quellcode:
Fals eine Verbindung zu stand egekommen ist, wird der gesendete String vom Server im programm des Clients ausgegeben.procedure TForm1.IdTCPClient1Connected(Sender: TObject); begin Memo1.Lines.Add(IdTCPClient1.ReadLn) ; end;
Delphi-Quellcode:
Hier wird die Verbindung mit Hilfe eine sButtosn unterbrochen. An den Server wird das Server Commadn "QUIT" gesendet, der Rückgabewert wird im Clinet ausgegeben und di eVerbindung wird nochmals von seiten des Clinets unterbrochen.procedure TForm1.Button2Click(Sender: TObject); begin With IdTCPClient1 Do begin writeLn('QUIT') ; Memo1.Lines.Add(ReadLn) ; disconnect; end; end;
Delphi-Quellcode:
Nochmals bestätigung der Trennung der Verbindung.procedure TForm1.IdTCPClient1Disconnected(Sender: TObject); begin Memo1.Lines.Add('Verbindung verloren/getrennt.') ; end;
Delphi-Quellcode:
Hier istv der Sendebutton für Befehle an den Server.procedure TForm1.BsendenClick(Sender: TObject); begin With IdTCPClient1 Do begin writeLn(Ecommands.Text) ; Memo1.Lines.Add(Ecommands.Text) ; Memo1.Lines.Add(ReadLn) ; end; end; Wie kann ich den mehrzeilige Nachrichten vom Server "einholen" ? ReadLn holt ja scheinbar nur eine Zeile und nicht jede gesendete. mfg Cya /edit: nun geht das wieder nicht mit dem schnellen hin und her connecten -.- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz