【发布时间】:2014-12-14 01:32:20
【问题描述】:
我有一个在端口 25 和 465 上运行的 TIdSMTPServer,它的 OnConnect 事件如下所示:
procedure TMainForm.SMTPServerConnect(AContext: TIdContext);
begin
if (AContext.Connection.IOHandler is TIdSSLIOHandlerSocketBase) then begin
TIdSSLIOHandlerSocketBase(AContext.Connection.IOHandler).PassThrough := False;
end;
在激活SMTPServer之前执行这段代码:
with IdServerIOHandlerSSLOpenSSL1 do begin
SSLOptions.CertFile := myCertFile;
SSLOptions.RootCertFile := myRootCertFile;
SSLOptions.KeyFile := myKeyFile;
end;
SMTPServer.IOHandler := IdServerIOHandlerSSLOpenSSL1;
当客户端尝试连接到端口 465(使用implicit SSL)时一切正常。但是,当另一个 smtp 服务器(例如 yahoo 或 gmail)发送邮件时,它会出现在端口 25 上,并且显然在我的 OnConnect 事件中被阻止。所以我问是否可以发出STARTTLS 之类的东西,并使用 SSL 以某种方式加密端口 25 上的连接,或者有没有办法告诉对方我想在端口 465 上使用 SSL 进行通信(使用我的证书在这两种情况下,连接始终是直接的 - 无需用户名/密码验证)?
【问题讨论】:
标签: delphi email ssl smtp indy