Visualizzazione dei messaggi di posta elettronica di un utente
È stata creata un'app JavaScript connessa a Microsoft 365 usando Microsoft Authentication Library. Ora è possibile recuperare i messaggi di posta elettronica di un utente e visualizzarli nell'app.
Decidere quali autorizzazioni sono necessarie per l'app
Tutti i dati esposti da Microsoft Graph sono protetti e all'app devono essere concesse le autorizzazioni appropriate per accedervi. L'autorizzazione necessaria dipende dal tipo di informazioni a cui l'app deve accedere. Ad esempio, per accedere al calendario dell'utente, l'app deve disporre dell'autorizzazione Calendars.Read. Per accedere all'e-mail di un utente, l'app richiede l'autorizzazione Mail.Read. L'elenco esatto delle autorizzazioni necessarie per ogni operazione è disponibile nel riferimento all'API di Microsoft Graph.
Se l'app carica diversi tipi di dati, gli utenti devono concedere più autorizzazioni necessarie per accedere a queste informazioni. Nell'app, richiedere solo le autorizzazioni necessarie.
Supporre che l'app abbia due pagine. Una pagina mostra i messaggi di posta elettronica di un utente e l'altra mostra il calendario. Quando l'utente accede all'app per la prima volta, l'app richiede l'accesso solo alle informazioni di base del profilo. Passando alla pagina che mostra i messaggi di posta elettronica, l'app richiede l'autorizzazione per leggere le e-mail. Se non visitano mai la pagina dell'app che mostra il calendario, l'app non avrà accesso ai dati del calendario.
Questo modello è denominato consenso dinamico ed è il modo consigliato per richiedere le autorizzazioni da app connesse a Microsoft 365. Con il consenso dinamico, gli utenti controllano i dati che condividono con le app utilizzate, riducendo al minimo i rischi per la sicurezza.
Specificare le autorizzazioni necessarie
Prima di chiamare Microsoft Graph, verificare che Microsoft Authentication Library contenga un elenco delle autorizzazioni richieste da Microsoft Graph. Microsoft Authentication Library controlla automaticamente se il token di accesso recuperato in precedenza presenta o meno gli ambiti necessari. In alternativa, tenta automaticamente di recuperare un nuovo token di accesso. Quando si usa l'app per la prima volta, Microsoft Authentication Library visualizza una finestra che chiede di concedere il consenso all'app accedendo a questa informazione.
Se si tiene traccia degli ambiti di Microsoft Authentication Library in una variabile globale, verificare se le autorizzazioni necessarie sono incluse nell'elenco degli ambiti prima di eseguire la chiamata. Poiché è necessario assicurarsi gli ambiti necessari prima di ogni chiamata, è possibile eseguirne il wrapping in una funzione helper.
function ensureScope (scope) {
if (!msalRequest.scopes.some((s) => s.toLowerCase() === scope.toLowerCase())) {
msalRequest.scopes.push(scope);
}
}
Quando si chiama Microsoft Graph per recuperare i dati, assicurarsi che le autorizzazioni necessarie vengano incluse chiamando la funzione helper.
async function getEmails() {
ensureScope('mail.read');
// ...
}
Recuperare i messaggi di posta elettronica di un utente da Microsoft Graph
Per ottenere i messaggi di posta elettronica di un utente da Microsoft Graph, chiamare l'endpoint /me/messages
. Questo restituisce un elenco di e-mail dalla cassetta postale dell'utente connesso. Per ottenere i messaggi di posta elettronica di un utente, occorre concedere all'app l'autorizzazione Mail.Read
. È possibile chiamare gli endpoint di Microsoft Graph usando Microsoft Graph SDK. Per usarlo, specificare l'endpoint e il tipo di richiesta che si desidera eseguire.
Il recupero dei messaggi di posta elettronica è una richiesta GET eseguita come segue:
graphClient.api('/me/messages').get();
Gli endpoint di Microsoft Graph restituiscono i dati in ordine arbitrario. Per assicurarsi di ottenere i messaggi più recenti, ordinarli in ordine decrescente in base alla data di ricezione.
graphClient
.api('/me/messages')
.orderby('receivedDateTime desc')
.get();
Quando si recuperano dati da Microsoft Graph, è consigliabile recuperare sempre solo i dati necessari come indicato in precedenza. Ridurre al minimo la quantità di dati che Microsoft Graph recupera e trasferisce sull'app consente di migliorare significativamente le prestazioni.
È possibile limitare la quantità di dati recuperati da Microsoft 365 in due modi:
- selezionando il numero di elementi da ottenere;
- selezionando le informazioni specifiche da includere.
Per specificare le proprietà da recuperare, estendere la richiesta di Microsoft Graph con il metodo select
e passare un elenco delimitato da virgole di proprietà da restituire. Ad esempio, per ottenere un elenco di messaggi di posta elettronica con solo l'oggetto e la data/ora in cui sono stati ricevuti, usare il comando seguente:
graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.get();
Consiglio
È possibile trovare l'elenco completo delle proprietà disponibili in ogni endpoint nel riferimento dell'API Microsoft Graph.
Un'altra azione possibile per limitare la quantità di dati restituiti da Microsoft 365 consiste nel specificare il numero di elementi da ottenere. Per specificare il numero di elementi da ottenere, estendere la richiesta di Microsoft Graph con il metodo top
. Ad esempio, per recuperare gli ultimi 10 messaggi di posta elettronica ricevuti, usare il comando seguente:
graphClient
.api('/me/messages')
.select('subject,receivedDateTime')
.orderby('receivedDateTime desc')
.top(10)
.get();
Passaggi successivi
Ora mettere in pratica quanto imparato per estendere l'app in modo da visualizzare gli ultimi 10 messaggi di posta elettronica ricevuti per l'utente corrente.