这里有点奇怪,设置" UseTLS"要utUseExplicitTLS然后连接到其Implicit TLS端口上的邮件服务器,第一次尝试允许连接并发送电子邮件,该端口上的后续尝试正确失败。
只是想知道是否有人对如何避免初始连接和发送的误报有任何想法。
检查是为了处理非标准端口可能被用于用户的邮件服务器。几乎所有我见过的例子都假设将始终提供正确的信息。
以下是处理它的代码部分(不包括错误记录):
function SendTestEmail(EmailAddress: String): Boolean;
var
EmailMessage: TidMessage;
begin
IdSMTPEmail.AuthType := satDefault
IdSMTPEmail.Username := ...;
IdSMTPEmail.Password := ...;
IdSMTPEmail.Port := 465;
IdSMTPEmail.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdSMTPEmail);
IdSMTPEmail.UseTLS := utUseExplicitTLS;
TIdSSLIOHandlerSocketOpenSSL(IdSMTPEmail.IOHandler).SSLOptions.Method := sslvTLSv1_2;
try
// Connect
IdSMTPEmail.Connect('smtp.gmail.com');
try
// Create
EmailMessage := TidMessage.Create(nil);
try
// Set values
EmailMessage.Body.Add('Test Email');
EmailMessage.Subject := 'Test Email';
// Set sender details
EmailMessage.From.Address := 'test@test.com';
EmailMessage.From.Name := 'SSL Test';
// Set recipient
EmailMessage.Recipients.Add.Address := EmailAddress;
try
// Send message
IdSMTPEmail.Send(EmailMessage);
except
// Exception
on E: EIdSMTPReplyError do
begin
// Result
Result := False;
end;
end;
finally
// Free email
EmailMessage.Free;
end;
finally
// Disconnect
IdSMTPEmail.Disconnect;
end;
except
// Exception
on E: Exception do
begin
IdSMTPEmail.Disconnect;
// Result
Result := False;
end;
end;
end;
答案 0 :(得分:0)
使用以下代码,尝试通过电子邮件发送到端口465的所有尝试都正确失败。
我甚至没有假装理解为什么这样有效但我原来没有。
php -r "echo urldecode('{ABOVE URL}');"