Delphi Indy 10 SMTP -ошибка «Невозможно аутентифицировать в настоящее время»
Вопрос
Я использую этот кусок кода, чтобы отправить тестовое сообщение от Delphi Indy. У меня есть TIDSMTP, Tidmessage и idssliohandlersocketopenssl;
В приведенном ниже коде, если я настрою его на использование Gmail с SSL, он работает нормально, но как только я заменяю свои данные о сервере на мои декорации почтового сервера CPanel, он не работает ошибкой:
«Невозможно аутентифицировать в настоящее время».
Я использовал те же данные, которые я использовал бы для настройки своей учетной записи в Outlook 2007. Вот код
Idssliohandlersocketopenssl Детали.
method := sslvsslv3
mode := sslmUnassigned
//rest default values
procedure Tfrmnotification.btnSendClick(Sender: TObject);
var
IdMsg : TIdMessage;
begin
begin
IdMsg := TIdMessage.Create(nil);
try
with TIdSMTP.Create(nil) do
try
// UserName := 'something@gmail.com';
// Password := 'pass';
// Host := 'smtp.gmail.com';
// IOHandler := IdSSLIOHandlerSocketOpenSSL;
// Port := 587;
UserName := 'something@sasra.co.za';
Password := 'password';
Host := 'outgoing server detials';// same as outlooks
IOHandler := IdSSLIOHandlerSocketOpenSSL;
Port := 465;// this is correct port
UseTLS:= utUseExplicitTLS;
IdMsg.Body.Add('test');
IdMsg.Recipients.emailAddresses := 'something@gmail.com';
IdMsg.Subject := 'test';
IdMsg.From.Address := 'something@sasra.co.za';
IdMsg.From.Name := 'john';
Connect;
Send(IdMsg);
Disconnect;
finally
Free;
end;
finally
IdMsg.free;
end;
showmessage('done');
end;
Любая помощь будет добавлена.
Решение
Порт 465 используется для SMTP через неявный SSL. Вы установили USETLS в utuseexplicittls. Правильное значение должно (скорее всего) быть UTUSEIMPLICITTLS.