Buongiorno a tutti.
Ho un vecchio applicativo che mandava delle email a degli indirizzi, usando una mail di gmail.
Sembra non funzionare piu, mi da errore di password non valida ma ovviamente la password funziona, entrando da browser in gmail con le stesse credenziali entro senza problemi.
Forse gmail non accetta piu l uso estermo?.
se prima funzionava e nessuno ha cambiato le impostazioni di gmail.. eventualmente sapete cosa dovrei controllare nella ccount gmail oltra ad aver abilitato l imap ?
questo è il codice:
function TDM.SendMail(idMessage: TIdMessage): Boolean;
var
smtp: TIdSMTP;
IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
begin
Result := False;
try
try
IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(Self);
IdSSLIOHandlerSocket.SSLOptions.SSLVersions := myEmailSenderInfo[myEmailSenderId].SSLVersions;
IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient;
smtp := TIdSMTP.Create(nil);
smtp.IOHandler := IdSSLIOHandlerSocket;
smtp.UseTLS := myEmailSenderInfo[myEmailSenderId].UseTLS;
smtp.AuthType := satDefault;
smtp.Host := myEmailSenderInfo[myEmailSenderId].Server;
smtp.Port := myEmailSenderInfo[myEmailSenderId].Port;
smtp.Username := myEmailSenderInfo[myEmailSenderId].Address;
smtp.Password := myEmailSenderInfo[myEmailSenderId].Password;
smtp.Connect;
// Connection to SMTP Server
if not smtp.Connected then
begin
DoLog('ERROR: Unable to connect to SMTP server ' + myEmailSenderInfo[myEmailSenderId].Server);
Result := SendMailRetry(idMessage);
Exit;
end;
// SMTP Authentication
if not smtp.Authenticate then
begin
DoLog('ERROR: Unable to send email: Authentication problem on ' + myEmailSenderInfo[myEmailSenderId].Server);
Result := SendMailRetry(idMessage);
Exit;
end;
// Email send
smtp.Send(idMessage);
DoLog('Alert email sent on ' + myEmailSenderInfo[myEmailSenderId].Server);
Result := True;
except
on e: Exception do
begin
DoLog('EXCEPTION: Exception sending email on ' + myEmailSenderInfo[myEmailSenderId].Server + ' - ' + e.Message);
Result := SendMailRetry(idMessage);
end;
end;
finally
if Assigned(IdSSLIOHandlerSocket) then
begin
FreeAndNil(IdSSLIOHandlerSocket);
end;
if Assigned(smtp) then
begin
if (smtp.Connected) then
smtp.Disconnect();
FreeAndNil(smtp);
end;
end;
end;
per completezza :
tmpEmailSenderInfo.Name := K_SENDER_NAME;
tmpEmailSenderInfo.Address := K_SENDER_ADDRESS_1;
tmpEmailSenderInfo.Password := K_SENDER_PASSWORD_1;
tmpEmailSenderInfo.Server := K_SMTP_SERVER_1 ='smtp.gmail.com';
tmpEmailSenderInfo.Port := K_PORT_1 =465;
tmpEmailSenderInfo.SSLVersions := [sslvSSLv23];
tmpEmailSenderInfo.UseTLS := utUseImplicitTLS;