Esercitazione: visualizzare i messaggi di posta elettronica di un utente

Completato

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.

  1. Aprire Startup.cs nell'editor e prendersi un momento per esplorare Microsoft Identity, Microsoft Graph e ASP.NET Core middleware definito in ConfigureServices.

  2. 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.

  3. 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 e GetNextLink.
  4. Rimuovere il codice esistente nel costruttore.

  5. Modificare il costruttore per inserire ILogger<GraphEmailClient> e GraphServiceClient e assegnare i valori dei parametri ai campi associati:

    public GraphEmailClient(
      ILogger<GraphEmailClient> logger,
      GraphServiceClient graphServiceClient)
    {
        _logger = logger;
        _graphServiceClient = graphServiceClient;
    }
    
  6. Individuare il GetUserMessages() metodo e sostituire il codice esistente con i seguenti try/catch blocchi di codice:

    try
    {
    
    }
    catch (Exception ex)
    {
      _logger.LogError($"Error calling Graph /me/messages: { ex.Message}");
      throw;
    }
    
  7. 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 alla receivedDatetimeproprietà e selezionerà solo le proprietà Subject, BodyPreview, e ReceivedDateTime.

    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;
    
  8. Salvare il file GraphEmailClient.cs prima di continuare.

  9. 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, e Messages.
    • GraphCalendarClient viene inserito nel costruttore e assegnato al _graphEmailClient campo.
  10. 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à.

  11. 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.

  1. Aprire il file Email.cshtml nell'editor.

  2. 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.
  3. Individuare il @* Add foreach here *@ commento nel file e sostituirlo con il seguente codice:

    @foreach(var message in Model.Messages)
    {
    
  4. Individuare il @* Add foreach closing bracket here *@ commento e sostituirlo con una parentesi quadra chiusa per foreach l'istruzione aggiunta nel passaggio precedente.

  5. Individuare il @* Add message subject here *@ commento e sostituirlo con il seguente codice per scrivere l'oggetto di ogni messaggio:

    @message.Subject
    
  6. 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
    
  7. 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
    
  8. 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!

  1. 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
      
  2. Aprire un browser e visitare https://localhost:5001.

  3. Accedere usando il tenant per sviluppatori di Microsoft 365 usato in precedenza durante la registrazione dell'applicazione Microsoft Entra.

  4. Selezionare il collegamento Posta elettronica nell'intestazione per visualizzare i messaggi di posta elettronica dell'utente.

  5. 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.

    Pagina che visualizza i messaggi di posta elettronica recuperati da Microsoft Graph.

    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.

  6. 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!