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.
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
}
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>();