1. Passaggi per gmail



Una volta creato l'account gmail:

  • Vai su https://myaccount.google.com/security

  • Assicurati che la verifica in due passaggi (2FA) sia attiva.

  • Dopo che è attiva, vai a:
    https://myaccount.google.com/apppasswords

  • Seleziona:

    • App: Posta

    • Dispositivo: Altro → dai un nome (es. SerenityApp)

  • Ti verrà generata una password di 16 caratteri. Copiala.




2. Configurazione SmtpSettings nel json



Nel progetto andare a modificare il file "appsettings.json" e verificare che ci sia questo:

 

"SmtpSettings": {
  "Host": "smtp.gmail.com",
  "Port": 587,
  "UseSsl": true,
  "SecureSocket": "StartTls",
  "From": "tuo-indirizzo@gmail.com",
  "Username": "tuo-indirizzo@gmail.com",
  "Password": "password_di_16_caratteri_di_gmail",
  "PickupPath": null,
  "AutoUseQueue": false
}




3. Configurazione Startup



Controllare che nel proprio Startup ci sia questo codice, nel caso non ci sia è necessario aggiungerlo:

 

// ⚠️ Ignora solo gli errori di revoca del certificato
System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
{
    if (sslPolicyErrors == System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors && chain != null)
    {
        foreach (var status in chain.ChainStatus)
        {
            if (status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.RevocationStatusUnknown ||
                status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.OfflineRevocation)
            {
                // Ignora solo questi errori
                continue;
            }

            // Qualsiasi altro errore => blocca
            if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError)
                return false;
        }

        // Solo errori di revoca ignorati
        return true;
    }

    return sslPolicyErrors == System.Net.Security.SslPolicyErrors.None;
};


services.Configure<SmtpSettings>(Configuration.GetSection("SmtpSettings"));
services.AddSingleton<Serenity.Extensions.IEmailSender, Serenity.Extensions.EmailSender>();