Utilisation D7 + Indy 10 Dernière construction.
Mon code utilise TIDSMTP pour envoyer un email. Je continue à obtenir une "connexion fermée gracieusement" à certains utilisateurs finaux et que l'e-mail n'est jamais envoyé. P>
Le code est comme: p>
try ~~~~ ~~~~ _idSMTP := TIdSmtp.Create; with _idSMTP do begin Host := 'myhost'; Connect; try Send(_EmailMsg); Result := True; except on E: Exception do begin MsgDlgErr(Self.Handle, E.Message) end end; end; finally _idSMTP.Disconnect; _idSMTP.Free; end;
4 Réponses :
Lire tout à ce sujet sur http://www.swissdelphicenter.ch/fr /showarticle.php?id=1 P>
eidconncLostgrade est un exception signalant que le la connexion a été fermée par le autre côté intentionnellement. Ce n'est pas la même chose qu'une connexion cassée qui provoquerait une erreur de réinitialisation de connexion. Si l'autre côté a fermé le connexion et la prise est lue ou écrit à, eidconnClosedgrade sera soulevé par Indy. C'est semblable à la tentative de lecture ou d'écriture à un fichier qui a été fermé sans vos connaissances. P>
Dans certains cas, c'est une véritable exception et votre code doit le gérer. Dans autres cas (typiquement serveurs) cette est une partie normale du fonctionnement de le protocole et l'indy gère cette Exception pour vous. Même si indy attrape-le, lors de la course dans l'IDE Le débogueur sera déclenché en premier. Vous pouvez simplement appuyer sur F9 pour continuer et Indy va gérer l'exception, mais l'arrêt constant pendant Le débogage peut être assez gênant. Dans les cas où Indy attrape la Exception, vos utilisateurs ne verront jamais une exception dans votre programme sauf si est couru de l'IDE. P> blockQuote>
L'exception ne se produit pas dans l'IDE, mais sur les ordinateurs d'utilisateur final.
Certains analyscaners bloquent des connexions sortantes sur le port SMTP de nos jours. Cela peut entraîner une mauvaise relation et lancer cette erreur.
@Atlas: C'est pourquoi il dit "dans certains cas ..." :) La page parle également des autres cas.
Le serveur pourrait également déconnecter la connexion à sa fin si une erreur est détectée dans les données de message ou les adresses de l'expéditeur / destinataire.
Dans mon cas, l'erreur a été causée car j'ai utilisé une adresse électronique de l'expéditeur d'un autre domaine que celui hébergé par le serveur SMTP, c'est pourquoi le serveur SMTP a rejeté la connexion. p>
Dans mon expérience, dans le cas de AT & T Server, il rejette une adresse électronique qui n'est pas sinon la "connexion fermée gracieusement" signifie qu'une tentative est en cours de lecture pour lire / écrire sur la prise fermée par le pair @ att.net code> dans le courrier
à partir de code>. Plus d'informations peuvent être déterminées en enregistrant l'erreur en utilisant
TidLogevent code> pour ces utilisateurs qui le reçoivent, sinon le rapport d'erreur est plutôt vague - si la déconnexion (connexion fermée gracieusement) est juste après le courrier
de code> alors il peut indiquer une stratégie de serveur rejettant un courrier électronique avec le domaine qu'il n'accueille pas comme expliqué par Toni. P>
Nous avons eu cette erreur lorsque les bibliothèques OpenSSL n'avaient pas été installées sur le site client p>