我的应用使用Indy TiDSMTP客户端组件发送电子邮件。但是,在某些情况下,客户无法或不愿意设置SMTP服务器和端口,用户名等,因此我希望提供一种发送电子邮件的解决方案,而无需任何人设置任何内容。
我尝试了TIDSMTPRelay演示,但我需要explcitly输入DNS服务器IP地址(当我这样做时,它失败了“Project SMTPRelay.exe引发异常类EIdHostRequired并带有消息''”)。我希望Indy解决方案不需要用户输入任何设置 - 只要他们可以访问互联网就可以“开箱即用”。
我还需要提供什么?
TIA, [R
答案 0 :(得分:10)
您必须直接将电子邮件发送到收件人邮件服务器。这需要执行DNS查找以检索每个收件人域的MX记录。 Indy的TIdSMTPRelay
组件为您处理(通过内部使用TIdDNSResolver
组件)。
没有平台中立的方式来查询计算机的当前DNS配置。这需要特定于平台的API。 Indy现在没有任何东西来实现自动化,尽管我认为它不会在未来版本中超出可能性范围。
您看到的异常由TIdTCPClient.Connect()
引发。使用TIdSMTPRelay
时,您不应该手动调用它。在确定每个收件人域连接到哪个Host
后,会在内部调用它。您需要自己设置DNSServer
属性,可选地设置RelaySender
属性,然后调用Send()
方法。没别了。