gpt4 book ai didi

delphi - Indy 和 smtps : cannot connect

转载 作者:行者123 更新时间:2023-12-02 09:19:36 24 4
gpt4 key购买 nike

我正在尝试使用 Indy 和所说明的技术从 smtps(安全 smtp)发送电子邮件 in this Marco Cantù article .

这就是我正在使用的:

object SMTP: TIdSMTP
IOHandler = IdSSLIOHandlerSocketOpenSSL1
SASLMechanisms = <>
UseTLS = utUseExplicitTLS
Left = 32
Top = 196
end

SMTP.Host := 'smtps.pec.aruba.it';;
SMTP.Port := 465;;
SMTP.Username := 'myaddress@pec.it';
SMTP.Password := 'myPassw0rd';
MailMessage.Encoding := meDefault;
MailMessage.From.Address := 'myaddress@pec.it';

MailMessage.BccList.EMailAddresses := 'testaddress0@gmail.com';
MailMessage.Subject := 'Test Mail';
MailMessage.Body.Text := 'Please ignore this mail, This is a test';

SMTP.Connect; //failure!!!
SMTP.Send(MailMessage);

我的程序卡在 SMTP.Connect 上,但没有任何异常或有用的错误。

如果我使用 gmail 设置而不是 aboe,如 the article 中所述所有作品

能给点建议吗?

我的 Indy 10.5.8 和 ssl dll 与 exe 位于同一路径中。

最佳答案

Connect() 挂起,因为您使用错误的 UseTLS 属性分配连接到错误的 Port

端口 465 是 SMTP 的隐式 SSL 端口,这意味着客户端必须在连接到服务器后立即加密连接,然后才能进行任何 SMTP 相关通信。服务器期望您的客户端发送 SSL 握手,但您的客户端没有这样做,因为您设置了 UseTLS=utUseExplicitTLS。这告诉 TIdSMTP 在连接到服务器时期望连接最初是未加密的,然后 TIdSMTP 可以向服务器发送显式 STARTTLS 命令需要时动态激活 TLS 加密。

因此,TIdSMTP 正在等待服务器发送 SMTP 问候语,但它从未发送,并且服务器期望您的客户端发送 SSL 握手,但它从未发送。在其中一方断开连接之前,就会发生死锁。

如果您连接到端口 465,则必须设置 UseTLS=utUseImplicitTLS。要使用 UseTLS=utUseExplicitTLS,您需要连接到端口 25 或 587。

关于delphi - Indy 和 smtps : cannot connect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11341944/

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