我的代码使用TIdSMTP发送电子邮件.
我一直在某些最终用户处“正常关闭连接”,并且永远不会发送电子邮件.
代码如下:
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;
任何建议?
解决方法
EIdConnClosedGracefully is an
exception signaling that the
connection has been closed by the
other side intentionally. This is not
the same as a broken connection which
would cause a connection reset error.
If the other side has closed the
connection and the socket is read or
written to,EIdConnClosedGracefully
will be raised by Indy. This is
similar to attempting to read or write
to a file that has been closed without
your knowledge.In some cases this is a true exception and your code needs to handle it. In other cases (typically servers) this is a normal part of the functioning of the protocol and Indy handles this exception for you. Even though Indy catches it,when running in the IDE the debugger will be triggered first. You can simply press F9 to continue and Indy will handle the exception,but the constant stopping during debugging can be quite annoying. In the cases where Indy catches the exception,your users will never see an exception in your program unless it is run from the IDE.