Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie TurboPower InternetPro FTP in eigener Unit/Komponente ? (https://www.delphipraxis.net/52202-wie-turbopower-internetpro-ftp-eigener-unit-komponente.html)

kalmi01 25. Aug 2005 11:20


Wie TurboPower InternetPro FTP in eigener Unit/Komponente ?
 
Hallo,
ich hätte da gern mal ein Problem.

Ich verwende TurboPower InternetPro.
Wenn ich die FTP-Komponente auf eine Form platziere und im Code dann die Konfiguration einbaue funktioniert alles, wie es soll.
Bastel ich mir eine eigene Komponente, mit allen "uses" wie beim Form und der selben Konfiguration, geht leider nichts mehr.
Der Debugger hilft auch nicht wirklich weiter, da es keinen Fehler gibt.

Delphi-Quellcode:
  interface
    uses
      SysUtils, Classes, IpMsg, IpSock, IpUtils, IpSmtp;

    function Send_Mail(MailHost, Absender, Empfaenger, Betreff, MailText, Anhang : string) : boolean;

  implementation
///////////////////////////////////////////////////////////////////////////////////////////////////
// public
///////////////////////////////////////////////////////////////////////////////////////////////////
    function Send_Mail;
      var
        SmtpClient : TIpSmtpClient;
        Disclaimer : TStringList;
        i         : integer;
      begin
        //setup SMTP
        SmtpClient := TIpSmtpClient.Create(nil);
        SmtpClient.Message.NewMessage;
        SmtpClient.Message.MailTo.Add(Empfaenger);
        SmtpClient.Message.From   := Absender;
        SmtpClient.Message.Subject := Betreff;
    SmtpClient.Message.ContentType := 'multipart';
    SmtpClient.Message.ContentSubtype := 'mixed';

        Disclaimer := TStringList.Create;
        Disclaimer.Add(MailText);
        SmtpClient.Message.EncodeBodyStrings(Disclaimer, '');
        Disclaimer.Free;

       SmtpClient.AttachmentList.Add(Anhang);

        //send mail
        SmtpClient.SendMail(MailHost, false);  // <<<<<<<<< hier wird nicht Connected
        for i := 0 to 999
        do begin
             Sleep(100);
             Result := SmtpClient.Connected;
             if Result
             then begin
                    SmtpClient.Quit;
                    Break;
                  end
             else WriteLn(SmtpClient.StateToStr(SmtpClient.State));
           end;
        if not Result
        then WriteLn(SmtpClient.StateToStr(SmtpClient.State));
      end;

Bernhard Geyer 25. Aug 2005 11:25

Re: Wie TurboPower InternetPro FTP in eigener Komponente ?
 
Manche Controls müssen auf eine Fenster plaziert werden damit sie funktionieren, da sie sich auf Windows-Messages verlassen.
Erzeug mal eine TForm und plaziere es dort drauf ohne das Formular sichtbar zu machen.

kalmi01 25. Aug 2005 11:37

Re: Wie TurboPower InternetPro FTP in eigener Komponente ?
 
Hallo Bernhard,

[heul][flenn] ich will doch aber kein Form verwenden.

Wenn die Form unsichtbar ist funktioniert es genauso, wie bei einer Sichtbaren.

Mit den Indy's geht's, nur dummerweise mag ich die nicht so besonders, seit ich von 7 auf 9 upgedatet hatte und fast meine ganzen Projekte nicht mehr richtig funzten.
Also hab ich wieder auf 7 zurück gedreht und angefangen alles auf TurboPower umgestellt.
Bis auf dieses eine Teil geht auch alles prima.

:gruebel: :gruebel: :gruebel:

jfheins 25. Aug 2005 11:40

Re: Wie TurboPower InternetPro FTP in eigener Komponente ?
 
Nur so als Frage: Wo ist die, im Titel angesprochene, Komponente ?

Entweder Titel oder Code ändern :mrgreen:

Zur frage: Gibt es vielleicht irgendwo eine Prozedur Connect() oder so ?

kalmi01 25. Aug 2005 11:58

Re: Wie TurboPower InternetPro FTP in eigener Unit/Komponent
 
Hi jfheins,
nur so als Antwort: Jetzt zufrieden ?

Zitat:

Gibt es vielleicht irgendwo eine Prozedur Connect() oder so ?
Kennst Du "InternetPRO" ?

Delphi-Quellcode:
Connect
wird von
Delphi-Quellcode:
SmtpClient.SendMail()
ausgeführt, bzw. genauer gesagt halt nicht.

Bernhard Geyer 25. Aug 2005 12:34

Re: Wie TurboPower InternetPro FTP in eigener Komponente ?
 
Zitat:

Zitat von kalmi01
[heul][flenn] ich will doch aber kein Form verwenden.

Und was stört dich daran? Der Endanwerder sieht doch das Formular nicht.

Zitat:

Zitat von kalmi01
Wenn die Form unsichtbar ist funktioniert es genauso, wie bei einer Sichtbaren.

Evtl. HandleNeeded aufrufen das das Formular auf jedenfall ein Windows-Fensterhandle besitzt. Sonst ist Sichtbar/Unsichtbar egal.

kalmi01 25. Aug 2005 15:01

Re: Wie TurboPower InternetPro FTP in eigener Unit/Komponent
 
So gehts.

Delphi-Quellcode:
    function Send_Mail;
      var
        MimePart  : TIpMimeEntity;
        SmtpClient : TIpSmtpClient;
        memMessage : TStringList;
        i         : integer;
      begin
        SmtpClient := TIpSmtpClient.Create(nil);
        SMTPClient.UserID := '';
        SMTPClient.Domain := '';

        SMTPClient.Message.NewMessage;
        SMTPClient.Message.MailTo.Add(Empfaenger);
        SMTPClient.Message.From    := Absender;
        SMTPClient.Message.CC.Text := '';
        SMTPClient.Message.BCC.Text := '';
        SMTPClient.Message.Subject := Betreff;

        memMessage := TStringList.Create;
        memMessage.Add(MailText);
        MimePart := SmtpClient.Message.GetBodyPlain(True);
        MimePart.EncodeBodyStrings(memMessage, '');
        SmtpClient.Message.ContentType := 'multipart';
        SmtpClient.Message.ContentSubtype := 'mixed';

        if FileExists(Anhang)
        then SmtpClient.AttachmentList.Add(Anhang);

        SMTPClient.SendMail(MailHost, true);
        Result := true;
      end;
Der "Fehler" bei den IPro-Kompo's war
Delphi-Quellcode:
for i := 0 to 999 
        do begin
             Sleep(100);
             Result := SmtpClient.Connected;
             if Result
             then begin
                    SmtpClient.Quit;
                    Break;
                  end
           end;
diese niedliche Schleife.
Ich weiss nicht warum, aber ohne funzt es jetzt.
OK, ich hab den Source ein bischen geändert, bei Ur-Source gehts jetzt aber auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz