Invio email con delphi e gmail

di il
1 risposte

Invio email con delphi e gmail

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;

1 Risposte

  • Re: Invio email con delphi e gmail

    22/12/2023 - ziobacco ha scritto:


    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?.

    La password da specificare non è quella dell'account: vedi queste istruzioni.

Devi accedere o registrarti per scrivere nel forum
1 risposte