gpt4 book ai didi

delphi - 使用 Indy 发送邮件而不使用外部服务器

转载 作者:行者123 更新时间:2023-12-03 15:41:12 25 4
gpt4 key购买 nike

我的应用程序使用 Indy TiDSMTP 客户端组件发送电子邮件。然而,在某些情况下,客户无法或不愿意设置 SMTP 服务器和端口、用户名等,因此我想提供一种无需任何人设置任何内容即可发送电子邮件的解决方案。

我尝试了 TIDSMTPRelay 演示,但需要显式输入 DNS 服务器 IP 地址(当我这样做时,它在“Project SMTPRelay.exe 引发异常类 EIdHostRequired 并带有消息 ''”时失败)。我希望有一种不需要用户输入任何设置的 Indy 解决方案 - 只要用户能够访问互联网,该解决方案就可以“开箱即用”。

我还需要提供什么?

TIA,

最佳答案

您必须将电子邮件直接发送到收件人邮件服务器。这需要执行 DNS 查找来检索每个收件人域的 MX 记录。 Indy 的 TIdSMTPRelay 组件会为您处理该问题(通过在内部使用 TIdDNSResolver 组件)。

没有平台中立的方法来查询计算机当前的 DNS 配置。这需要特定于平台的 API。 Indy 目前还没有任何适当的措施来实现自动化,尽管我认为它在未来版本中并非不可能。

您看到的异常是由 TIdTCPClient.Connect() 引发的。使用 TIdSMTPRelay 时,您不应该手动调用它。在确定每个收件人域要连接到哪个主机后,会在内部调用它。您自己需要做的就是设置 DNSServer 属性,可以选择设置 RelaySender 属性,然后调用 Send() 方法。没有别的了。

关于delphi - 使用 Indy 发送邮件而不使用外部服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594350/

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