public static IneoSmtp.Smtp.SendMailOffice365GraphParameters SendMailOffice365GraphParameters
{
    get //!\ ne pas mémoriser dans une statique car le clientSecret va changer
    {
        var l = Api.Zselect<SecretDescriptor>(Globals.RepData, "select id,secret from free_table_secrets where id like 'Off365%'");
        if (l == null)
            throw new ApplicationException("SendMailOffice365GraphParameters SQL error : " + Api.LastError);
        foreach(string key in new string[4] { "Off365ClId", "Off365ClSe", "Off365Tena", "Off365UId" })
            if (!l.Any(p => p.Id == key))
                throw new ApplicationException($"SendMailOffice365GraphParameters key \"{key}\" is missing !");
        return new IneoSmtp.Smtp.SendMailOffice365GraphParameters(
                                    l.First(p => p.Id == "Off365ClId").Secret,
                                    l.First(p => p.Id == "Off365ClSe").Secret,
                                    l.First(p => p.Id == "Off365Tena").Secret,
                                    l.First(p => p.Id == "Off365UId").Secret);
    }
}

public class SecretDescriptor
{
    public string Id { get; set; }
    public string Secret { get; set; }
}