Problem mit Emailversand via IdSmtp (Indy) in C++Builder 2007



  • Hallo allerseits,

    Ich verwende für den automatischen Emailversand die Indy-Bibliothek, die ja auch nun mittlerweile in die IDE integriert ist. Unter BCB V.5 mit der Indy V.9 funktioniert das ganze fehlerfrei. Ich musste jetzt dieses Projekt nach BCB 2007 migrieren und seitdem läuft es nicht mehr, ich bekomme beim Connect folgende Fehlermeldung:

    Exception EIdSocketError : "Socket Error #11001 Host not found
    ( Indy Version 10.1.1)

    An den Emailparametern/Firewall etc. selbst kann es nicht liegen, da mit gleichen Werte das Programm unter BCB5 fehlerfrei läuft.

    Hier ist der Code dazu:

    // Prepare Email -------------------------------------------------------------
    SMTP_SAP->Host= Get_Mailserver(); // Mailserver GMX-Test z.b."mail.gmx.net"
    SMTP_SAP->Port=25; // Standardport 25
    Message_SMTP->From->Text = Get_Absender_Mailadresse(); // S.Maryska@gmx.de
    Message_SMTP->Sender->Text= "Wareneingangsbuchungen";
    Message_SMTP->Recipients->EMailAddresses = Get_Empfaenger_Mailadresse();
    Message_SMTP->Subject="irgendwas";

    TStringList *body=new TStringList();
    body->Add(" Absender: Wareneingangsbuchung ");
    Message_SMTP->Body=body;
    Message_SMTP->MessageParts->Add();

    ...

    // send Email -----------------------------------------------------------------
    int timeout = 10000; // Timeout in Millisekunden, -1 fuer Default TimeOut, 0-Aus

    try {
    try {
    SMTP_SAP->Connect( timeout );
    SMTP_SAP->Send(Message_SMTP);
    SMTP_SAP->Disconnect();
    }
    ...

    catch ( EIdSocketError &exception ) {
    // kann passieren, wenn u.a. Virenscanner, Firewall aktiv
    // Write_LogDatei (" Fehler in Versende_Email, Socket_Error: " + exception.Message);
    ret_value = false;
    }
    ...
    __finally {

    // delComp ( Att )
    delComp ( body )

    Müssen in der neuen Indy Bibliothe noch zusätzliche Properties gesetzt werden?



  • Was sagt der Debugger, welchen Host gibt dein Get_Mailserver denn zurück?
    Und kannst du auf dem betreffenden Rechner den Host z.B. per Ping erreichen, ist also das Netzwerk korrekt konfiguriert?



  • Die Konfiguration hatte ich natürlich als erstes überprüft. Der Debugger gibt im Feld >Data> auch den richtigen Name des Emailservers an.

    Hat denn schon jemand mal mit der in BCB 2007 integrierten Indy Version erfolgreich Emails verschickt? Gibt es irgendwas gegenüber der Indy Version 9 zu beachten?



  • Hallo,
    ja das ist doch mal eine gute Nachricht 😉 Ich habe nämlich genau das gleiche Problem (und auch diese Fehlermeldung)! Um die Konfiguration zu testen, hatte ich mal mit einem anderen Tool einen Mailversand geprüft. Die Konfiguration ist OK. Meine Vermutung liegt darin, dass es wohl Unterschiede zwischen den einzelnen Indy-Versionen geben muss. Leider habe ich den Fehler bis dato nicht gefunden.

    Gruß
    Torsten

    PS: Ich verwende den C++Builder 2010 Architect.



  • Ein Upgrade auf Indy 10 wäre sicherlich kein Fehler.



  • Hi audacia,
    wenn Du das Update auf Indy10 im Projekt meinst, kann ich sagen: Ist geschehen!
    Sonst noch eine Idee?

    Gruß
    Torsten



  • Leider nein, mit Indy habe ich nicht allzuviel Erfahrung.
    Du könntest mal in den Embarcadero-Newsgroups nachfragen, speziell in den Internet-Groups, dort sind auch einige Indy-Entwickler aktiv.



  • Hallo,

    Grund ist, dass TIdSMTP::Connect als Parameter entweder "Host" oder "Port und Host" oder gar nichts erwartet, aber keinen int (timeout).

    LG, Micha



  • Hi Micha,

    genau das wars 😮 In Indy9 musste man beim Connect() den TimeOut-Wert angeben. In Indy10 halt den Host. Hab es versucht und siehe da, es geht 👍

    Vielen Dank
    Torsten



  • Hallo,

    so siehts aus wenn Änderungen nicht ausreichend dokumentiert werden! Leider ist das viel zu oft der Fall 😞

    LG, Micha


Anmelden zum Antworten