AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

idSMTP.Connect schlägt fehl

Ein Thema von Ykcim · begonnen am 18. Mär 2020 · letzter Beitrag vom 18. Mär 2020
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

idSMTP.Connect schlägt fehl

  Alt 18. Mär 2020, 12:18
Hallo Zusammen,

ich habe seit Jahren eine Klasse, mit der ich Mails versende. Diese funktioniert auch bei bestehenden Programmen. Ich habe vor einem halben Jahr von XE2 auf 10.3 gewechselt und habe jetzt das Problem, dass keine Verbindung mehr bei idSMTP.Connect aufgebaut wird. Der Vollständigkeit hier die Klasse mit den wichtigsten Methoden:

Delphi-Quellcode:
unit TMail_VersandUnit;

interface

uses
   Messages, SysUtils, Variants, Classes, Dialogs, ExtCtrls, StdCtrls,
   ComCtrls,IdSMTP, IdMessage, Menus, Clipbrd, IDText,IdAttachment,
   IdAttachmentFile, IdSSL, Codes, Uni, Forms, ComObj, TDatenbankUnit,
   IdSSLOpenSSL, IdExplicitTLSClientServerBase, IdGlobal;

type
   TMail_Versand= class
   strict protected
      FEmpfaenger: string;
      FBetreff: string;
      FBody: TStringList;
      FDatei_Pfad: string;
      FVorlagen_Pfad: string;
   private
      function SendEmail( Recipient : string; CCList : string; sSubject : string; Body : TStringList; Pfad : string ): boolean;
      procedure Set_Verbindungsdaten;
   public
      property Betreff : string read FBetreff write FBetreff;
      property Body : TStringList read FBody write FBody;
      property Empfaenger : string read FEmpfaenger write FEmpfaenger;
      property Datei_Pfad : string read FDatei_Pfad write FDatei_Pfad;
      property Vorlagen_Pfad : string read FVorlagen_Pfad write FVorlagen_Pfad;
      constructor create;
      function Versand(Dateianhang_delete: Boolean): boolean;
      procedure Set_Body(Auftrag, Datum, Verfasser, Kommentar, Tabelle: string);
   end;

var idSMTP: TidSMTP;
      idMessage: TidMessage;
      idSSLHandler: TIdSSLIOHandlerSocketOpenSSL;
      Mail_Versand: TMail_Versand;
      Query: TUniQuery;

implementation

constructor TMail_Versand.create;
begin
   FBody:=TStringList.Create;
   idMessage := TidMessage.Create;
   idSMTP := TidSMTP.Create;
end;

procedure TMail_Versand.Set_Body(Auftrag, Datum, Verfasser, Kommentar, Tabelle: string);
var Datei: TextFile;
    MyString: String;
begin
   AssignFile(Datei, ExtractFilePath(Application.ExeName) + 'KommentarMailVorlage.txt');
   Reset(Datei);
   FBody.Clear;
   try
      while not eof (Datei) do begin
         ReadLn(Datei, MyString);
         MyString:=StringReplace(MyString, 'XXXAuftrag',Auftrag, [rfReplaceAll]);
         MyString:=StringReplace(MyString, 'XXXDATUMNEU', Datum, [rfReplaceAll]);
         MyString:=StringReplace(MyString, 'XXXVERFASSERNEU',Verfasser, [rfReplaceAll]);
         MyString:=StringReplace(MyString, 'XXXKommentar',Kommentar, [rfReplaceAll]);
         MyString:=StringReplace(MyString, 'XXXTABELLE', Tabelle, [rfReplaceAll]);
         FBody.Add(MyString);
      end;
   finally
      CloseFile(Datei);
   end;
end;

procedure TMail_Versand.Set_Verbindungsdaten;
var Datei: TextFile;
    MyString: String;
begin
  AssignFile(Datei, ExtractFilePath(Application.ExeName) + 'Mail.ini');
  Reset(Datei);
  try
    ReadLn(Datei, MyString);
    idSMTP.Host := copy(MyString, pos(':', MyString)+1, length(MyString));
    ReadLn(Datei, MyString);
    idSMTP.Username := copy(MyString, pos(':', MyString)+1, length(MyString));
    ReadLn(Datei, MyString);
    idSMTP.Password := copy(MyString, pos(':', MyString)+1, length(MyString));
    ReadLn(Datei, MyString);
    idSMTP.Port := StrToInt(copy(MyString, pos(':', MyString)+1, length(MyString)));
    ReadLn(Datei, MyString);
    idMessage.From.text := copy(MyString, pos(':', MyString)+1, length(MyString));
    idMessage.Sender.text := copy(MyString, pos(':', MyString)+1, length(MyString));
  finally
    CloseFile(Datei);
  end;
end;


function TMail_Versand.SendEmail( Recipient : string; CCList : string; sSubject : string; Body : TStringList; Pfad : string )
   : boolean;
var
   nAlarmnr : integer;
   Attachment : TIdAttachment;
begin
   Result := True;

   Set_Verbindungsdaten;

   idMessage.Recipients.EMailAddresses := Recipient;
   idMessage.CCList.EMailAddresses := CCList;
   idMessage.Subject := sSubject;
   idMessage.ContentType := 'multipart/*';

   with TidText.Create( idMessage.MessageParts, Body ) do begin
      ContentType := 'text/html';
   end;

   if Pfad<>'then begin
      with TIdAttachmentFile.Create( idMessage.MessageParts, Pfad ) do begin
         idMessage.MessageParts.Add( );
      end;
   end;

   try
      idSMTP.Connect; //Hier entsteht der Fehler
      try
         idSMTP.Send( idMessage );
         Result := True;
      finally
      idSMTP.Disconnect;
      idMessage.Clear;
      end;
   except
      Result := False;
   end;
end;


function TMail_Versand.Versand (Dateianhang_delete: Boolean):boolean;
begin
   {! Empfaenger, Betreff, Text und der Dateianhang kommen aus der aufrufenden Procedure}
   Try
      Result:= SendEmail(empfaenger, '', betreff, FBody, FDatei_Pfad);
      if Result and Dateianhang_delete then
         deleteFile(FDatei_Pfad);
   Except
      Result:=false;
   End;
end;

initialization
   Mail_Versand := TMail_Versand.Create;

finalization
   idSMTP.Free;
   idMessage.Free;
   if Mail_Versand.Body <> nil then
      Mail_Versand.Body.Free;
   if Mail_Versand <> nil then
      Mail_Versand.Free;

end.
Der Fehler entsteht in der function TMail_Versand.SendEmail bei idSMTP.Connect;

Der FehlerCode lautet 10060 Connection timed out.

Hat jemand eine Idee, was ich verändern muss?
VIelen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: idSMTP.Connect schlägt fehl

  Alt 18. Mär 2020, 12:51
Socket Error 10060 heisst, dass der Host nicht erreichbar ist. Also überprüfe mal deine Daten der idSMTP Klasse, ob da alles korrekt gesetzt ist beim Connet. Hostname, Port, etc. korrekt? Ist eine Firewall im Spiel, die das blockiert? Stell mal die Windows Firewall komplett ab, um sicher zu gehen, dass es nicht daran liegt.
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: idSMTP.Connect schlägt fehl

  Alt 18. Mär 2020, 15:12
Hallo Zusammen,

das Thema ist erledigt. Es war tatsächlich die Firewall. Seitens der Holding wurde etwas umgestellt. Jetzt funktioniert es wieder.

Sorry!

Gruß Patrick
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 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