Esercitazione: visualizzare i messaggi di posta elettronica di un utente
Usiamo tutti i concetti illustrati fino a questo punto e apportiamo modifiche all'app di esempio per accedere ai messaggi di posta elettronica.
Caricare i messaggi di posta elettronica da Microsoft Graph
Per iniziare, aggiungere una chiamata a Microsoft Graph per caricare gli ultimi 10 messaggi di posta elettronica dell'utente corrente.
Aprire Startup.cs nell'editor e prendersi un momento per esplorare Microsoft Identity, Microsoft Graph e ASP.NET Core middleware definito in
ConfigureServices
.Individuare il codice seguente nel metodo
ConfigureServices()
.services.AddScoped<GraphProfileClient>(); services.AddScoped<GraphEmailClient>();
Questo codice abilita l'inserimento delle dipendenze per gli oggetti personalizzati denominati GraphProfileClient e GraphEmailClient. Gli oggetti hanno come ambito la richiesta HTTP, che significa che verranno creati una volta per ogni richiesta al server.
Aprire Graph/GraphEmailClient.cs e prendersi un momento per esplorare il codice esistente. Annotare le seguenti funzionalità:
- Due campi
readonly
denominati_logger
e_graphServiceClient
sono inclusi nella classe. Gli oggetti inseriti nel costruttore verranno assegnati a tali campi. - La classe contiene i metodi
GetUserMessages
,GetUserMessagesPage
eGetNextLink
.
- Due campi
Rimuovere il codice esistente nel costruttore.
Modificare il costruttore per inserire
ILogger<GraphEmailClient>
eGraphServiceClient
e assegnare i valori dei parametri ai campi associati:public GraphEmailClient( ILogger<GraphEmailClient> logger, GraphServiceClient graphServiceClient) { _logger = logger; _graphServiceClient = graphServiceClient; }
Individuare il
GetUserMessages()
metodo e sostituire il codice esistente con i seguentitry/catch
blocchi di codice:try { } catch (Exception ex) { _logger.LogError($"Error calling Graph /me/messages: { ex.Message}"); throw; }
All'interno del
try
blocco, aggiungere il seguente codice da usare_graphServiceClient
per recuperare 10 messaggi di posta elettronica dall'account dell'utente. Il codice ordinerà i risultati in base allareceivedDatetime
proprietà e selezionerà solo le proprietàSubject
,BodyPreview
, eReceivedDateTime
.var emails = await _graphServiceClient.Me.Messages .Request() .Select(msg => new { msg.Subject, msg.BodyPreview, msg.ReceivedDateTime }) .OrderBy("receivedDateTime desc") .Top(10) .GetAsync(); return emails.CurrentPage;
Salvare il file GraphEmailClient.cs prima di continuare.
Aprire Pages/Email.cshtml.cs e prendirsi un momento per esplorare il codice esistente. Annotare le seguenti funzionalità:
- La
EmailModel
classe contiene diversi campi e proprietà, ad esempio,_graphEmailClient
,NextLink
, eMessages
. -
GraphCalendarClient
viene inserito nel costruttore e assegnato al_graphEmailClient
campo.
- La
Individuare il
OnGetAsync
metodo e sostituire il codice esistente con il seguente codice:Messages = await _graphEmailClient.GetUserMessages();
Questo codice usa l'oggetto GraphEmailClientper recuperare 10 messaggi di posta elettronica e assegnarli alla
Messages
proprietà.Salvare il file Email.cshtml.cs prima di continuare.
Visualizzare i messaggi di posta elettronica nell'app
Il passaggio successivo consiste nel mostrare i messaggi di posta elettronica nella pagina Web.
Aprire il file Email.cshtml nell'editor.
Prendersi un momento per esaminare il codice HTML e Il codice Razor e notare che gestisce le seguenti attività:
- Assicura che l'utente sia autenticato.
- Controlla la
Model.Messages
proprietà per verificare se sono presenti messaggi di posta elettronica da scorrere e visualizzare nella pagina.
Individuare il
@* Add foreach here *@
commento nel file e sostituirlo con il seguente codice:@foreach(var message in Model.Messages) {
Individuare il
@* Add foreach closing bracket here *@
commento e sostituirlo con una parentesi quadra chiusa perforeach
l'istruzione aggiunta nel passaggio precedente.Individuare il
@* Add message subject here *@
commento e sostituirlo con il seguente codice per scrivere l'oggetto di ogni messaggio:@message.Subject
Individuare il
@* Add message received date/time here *@
commento e sostituirlo con il seguente codice per scrivere la data e l'ora di inizio dell'evento:@message.ReceivedDateTime.GetValueOrDefault().UtcDateTime
Infine, individuare il
@* Add message body preview here *@
commento e sostituirlo con il seguente codice per scrivere un'anteprima del corpo del messaggio:@message.BodyPreview
Salvare il file Email.cshtml prima di continuare.
Esecuzione dell'app
Prima di eseguire l'applicazione, verificare che nell'account usato per accedere siano presenti alcuni messaggi di posta elettronica. È giunto il momento di eseguire l'applicazione e provarla!
Eseguire il passaggio seguente in base all'Editor di codice:
Visual Studio
Premere F5 per compilare ed eseguire il progetto.
Visual Studio Code o un altro Editor di codice
Aprire una finestra del terminale nella cartella Begin ed eseguire il comando seguente:
dotnet run
Aprire un browser e visitare
https://localhost:5001
.Accedere usando il tenant per sviluppatori di Microsoft 365 usato in precedenza durante la registrazione dell'applicazione Microsoft Entra.
Selezionare il collegamento Posta elettronica nell'intestazione per visualizzare i messaggi di posta elettronica dell'utente.
Una volta caricatasi la pagina, viene effettuata una richiesta GET all'endpoint
/me/messages
di Microsoft Graph e il token di accesso viene passato nell'Intestazione autorizzazione. La chiamata a/me/messages
recupererà quindi i dati in modo sicuro dal servizio e li visualizzerà nella pagina.Nota
Se non vengono visualizzati messaggi di posta elettronica, assicurarsi che siano presenti messaggi di posta elettronica nella Posta in arrivo dell'account usato per accedere all'app.
Chiudere il browser e premere CTRL+Cnella finestra del terminale per arrestare il server prima di continuare.
Nota
Se il progetto è stato aperto in Visual Studio, è possibile chiudere il browser o selezionare MAIUSC+F5 in Visual Studio per arrestare il server. Chiudere la finestra del terminale creata da Visual Studio se è ancora aperta.
È stato illustrato correttamente come accedere e visualizzare i messaggi di posta elettronica di Microsoft 365 per un utente connesso tramite Microsoft Graph e ASP.NET Core!