gpt4 book ai didi

delphi - Indy SMTPServer 在 OnConnect 事件中发送错误消息

转载 作者:行者123 更新时间:2023-12-02 04:54:14 25 4
gpt4 key购买 nike

我想在 SMTPServer.OnConnect 事件中向我想要的客户端发送一条错误消息(当然,直接转到 OnDisconnect 事件)看起来像 gmail 暂时阻止了 ip 消息:421,“4.7.0”,我们的系统检测到来自您的 IP 地址的未经请求的邮件数量异常。为了保护我们的用户免受垃圾邮件的侵害,从您的 IP 地址发送的邮件已被暂时阻止。查看我们的批量电子邮件发件人指南。这就是我尝试的方法:

procedure TMainForm.SMTPServerConnect(AContext: TIdContext);
var
errMess : String;
begin
if ipTemporaryBanned(AContext.Binding.PeerIP) then begin
AContext.Connection.IOHandler.WriteLn('421 ' + 'IP temporary banned.');
raise Exception.Create('IP temporary banned.');
end;
end;

如果我使用 TIdSMTP 组件,则没有问题 - 我在 try .. except block 中捕获错误,但是当我使用另一个邮件客户端时 - 例如 Mozilla Thunderbird - 我无法收到正在发送的错误消息 - 它只显示“与 SMTP 服务器的连接超时”。如何发送错误以便所有邮件客户端都可以读取它?

最佳答案

您无法控制客户端如何处理来自服务器的错误。客户端有责任检测来自服务器的错误并采取相应的行动,但他们没有义务向用户报告服务器的错误消息,他们可以自由地做任何事情他们要。您在服务器端对此无能为力。您所能做的就是发送错误消息,并希望客户端至少具有日志记录功能,以便用户可以在需要时查找错误消息。

话虽这么说,我确实建议您在错误消息中包含扩展回复代码(就像 GMail 那样),以便识别扩展代码的客户端至少知道该错误是暂时的并且与安全相关:

AContext.Connection.IOHandler.WriteLn('421 4.7.0 IP temporary banned.');

关于delphi - Indy SMTPServer 在 OnConnect 事件中发送错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26911662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com