Visualizzazione post con etichetta MS Outlook. Mostra tutti i post
Visualizzazione post con etichetta MS Outlook. Mostra tutti i post

martedì 11 giugno 2024

MS Outlook: Nascondere l'interruttore Prova il nuovo Outlook tramite registro di sistema

Nelle recenti versioni di Outlook è apparso, in alto a destra della finestra del client, l'interruttore Prova il nuovo Outlook che consente di provare le funzionalità più recenti, le funzionalità assistite intelligenti e una nuova progettazione moderna e semplificata dell'app Outlook. L'intento di Microsoft è quello di introdurre una serie di innovazioni che mirano a migliorare significativamente l'esperienza utente, offrendo un mix di funzionalità avanzate, una nuova interfaccia utente e una maggiore integrazione con altri servizi Microsoft.
Interruttore Prova il nuovo Outlook
FIG 1 - Interruttore Prova il nuovo Outlook

Tuttavia il nuovo Outlook è ancora in una fase sperimentale e non tutte le funzionalità della modalità "classica" sono supportate. Ad esempio, non vengono supportati i componenti aggiuntivi,  supporto limitato per le cartelle pubbliche e, al momento, non è previsto il supporto offline.

In un contesto aziendale potrebbe essere una buona idea fare in modo che l'interruttore Prova il nuovo Outlook non venga visualizzato agli utenti. Tale operazione può essere eseguita tramite Intune, con la creazione di una policy o agendo tramite il registro di sistema. In quest'articolo verrà mostrata quest'ultima opzione:
  • Avviare l'Editor del registro di sistema (WIN+R e digitare regedit seguito da invio).
  • Posizionarsi sulla seguente chiave di registro  
    HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Options\General
  • Creare, se non presente, un valore DWORD e rinominarlo in HideNewOutlookToggle
  • Eseguire un doppio click del mouse sul valore appena creato e assegnargli come valore 1 quindi cliccare su OK
    Editor del Registro di sistema
    FIG 2 - Editor del Registro di sistema

  • Riavviare Outlook.
Per ripristinare l'interruttore basterà eliminare il valore DWORD nominato HideNewOutlookToggle e assegnargli valore 0.





lunedì 7 agosto 2023

MS Outlook: Outlook si è chiuso mentre alcuni elementi erano aperti

A causa di un bug, all'avvio di Outlook potrebbe apparire il messaggio
"Outlook si è chiuso mentre alcuni elementi erano aperti. Riaprire gli elementi dell'ultima sessione?"
anche se il client di posta viene chiuso correttamente. Microsoft è a conoscenza del problema e sta lavorando ad una fix.
Microsoft Outlook
FIG 1 - Microsoft Outlook

In attesa che venga rilasciata una fix ufficiale, una soluzione temporanea consiste nel disattivare la relativa opzione di avvio di Outlook:
  • Dal menu File di Outlook, selezionare Opzioni;
  • Nella scheda Generale, in Opzioni di avvio , selezionare Mai riaprire gli elementi precedenti dal menu a discesa;
    Outlook Opzioni di avvio
    FIG 2 - Outlook Opzioni di avvio

  • Cliccare sul pulsante OK per confermare la modifica e riavviare Outlook.


Se l'opzione sopra indicata non è presente o se si intende intervenire tramite il registro di sistema è possibile procedere nel seguente modo:
  • Avviare l’Editor del Registro di sistema (WIN+R e digitare regedit seguito da invio);
  • Posizionarsi sulla chiave
    HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Preferences
  • Modificare (o creare se non presente) il valore DWORD con nome ReopenWindowsOption e assegnargli il valore 1;
    Editor del Registro di sistema, ReopenWindowsOption
    FIG 3 - Editor del Registro di sistema, ReopenWindowsOption

  • Chiudere l'Editor del Registro di sistema e riavviare Outlook.

Per chi non volesse mettere le mani all'interno del registro di sistema, dal seguente link è possibile scaricare il file .reg per impostare l'opzione di avvio





mercoledì 3 maggio 2023

MS Outlook: Backup e ripristino delle Azioni rapide

Le Azioni rapide (Quick steps) di MS Outlook applicano una o più azioni ai messaggi di posta elettronica consentendo di risparmiare tempo e di automatizzare la gestione delle email. MS Outlook include delle azioni rapide già impostate che possono essere personalizzate oppure è possibile crearne di nuove.
MS Outlook, Azioni rapide
FIG 1 - MS Outlook, Azioni rapide

Le azioni rapide predefinite in MS Outlook includono quanto segue:

Azione Rapida Descrizione
Sposta
Sposta il messaggio selezionato in una cartella di posta specificata e contrassegna il messaggio come letto.
Al responsabile
Inoltra il messaggio al responsabile. Se l'organizzazione usa Microsoft Exchange Server o Microsoft 365, il nome del responsabile viene rilevato nel Elenco indirizzi globale e inserito nella casella A oppure è possibile specificare manualmente il destinatario.
Messaggio di posta elettronica team
Inoltra il messaggio ad altri utenti del team. Se l'organizzazione usa Microsoft Exchange Server o Microsoft 365, i nomi dei membri del team vengono rilevati nel Elenco indirizzi globale e inseriti nella casella A.
Chiudi
Segna il messaggio di posta elettronica selezionato come completato, lo sposta in una cartella e lo contrassegna come già letto.
Rispondi ed elimina
Risponde al mittente ed elimina il messaggio di posta elettronica originale.
Crea nuova
Creare un'azione rapida personalizzata per eseguire qualsiasi sequenza di comandi, assegnare un nome e quindi applicare un'icona per identificarla.


Le Azioni rapide non vengono salvate in locale sulla postazione ma all'interno della casella di posta elettronica. Con un account Exchange, creando un nuovo profilo MS Outlook su una nuova postazione, le azioni rapide verranno automaticamente ripristinate. Se si utilizza, invece, un account POP3, le azioni rapide verranno salvate all'interno del file PST pertanto, nel caso in cui ci si sposti su un nuovo computer, è necessario portarsi dietro e riutilizzare il file PST originale.

Le Azioni rapide sono memorizzate all'interno di una "cartella nascosta" della casella di posta o del file PST (nel caso di account POP3). Per eseguire il backup e il ripristino delle Azioni rapide, è necessario utilizzare MFCMAPI.

MFCMAPI è uno strumento di modifica di basso livello per accedere ai dati della casella di posta. Si tratta di uno strumento molto potente sviluppato da Stephen Griffin, Senior Escalation Engineer del Developer Support di Microsoft. Nell'utilizzo di MFCMAPI bisogna prestare sempre la massima attenzione in quanto si possono causare danni irreversibili alla casella di posta elettronica.


Backup di tutte le Azioni rapide

  • Scaricare l'ultima versione di MFCMAPI dal sito GitHub  (scaricare la versione a 32 o a 64 bit a seconda della versione di Outlook utilizzata).
  • Decomprimere e avviare MFCMAPI.
  • Cliccare sul menu Session, quindi su Logon e selezionare il profilo di MS Outlook su cui si intende agire.
    MFCMAPI Session, Logon
    FIG 2 - MFCMAPI Session, Logon

    Scegli profilo
    FIG 3 - Scegli profilo

  • Nella parte superiore di MFCMAPI vengono visualizzate tutte le caselle di posta configurate e i file pst collegati. Fare doppio clic sulla casella di posta di cui si desidera eseguire il backup delle Azioni rapide.
    Profilo MS Outlook
    FIG 4 - Profilo MS Outlook
  • Nel riquadro di navigazione a sinistra, espandere l'elenco di cartelle denominato Radice cassetta postale.
  • Espandere l'elenco di cartelle denominato IPM_SUBTREE.
  • A questo punto dovrebbe essere presente una cartella denominata: Impostazioni azioni rapide. Fare clic con il pulsante destro del mouse su di essa e scegliere: Export folder -> As MSG files...
    Impostazioni azioni rapide, Export folder
    FIG 5 - Impostazioni azioni rapide, Export folder
  • Abilitare entrambe le voci: Save associated items e Save as Unicode MSG e cliccare su OK.
    Save Folder Contents To MSG
    FIG 6 - Save Folder Contents To MSG
  • Selezionare la cartella in cui salvare le Azioni rapide e cliccare su OK. Poiché ogni azione rapida sarà salvata come un singolo file msg, è consigliabile selezionare una cartella vuota oppure crearne una nuova.
    Cartella
    FIG 7 - Cartella


Backup solo di alcune Azioni rapide
Nel caso in cui volessimo eseguire il backup solo di alcune Azioni rapide, seguire i passaggi mostrati in precedenza fino ad individuare la cartella Impostazioni azioni rapide.
  • Cliccare, con il tasto destro del mouse, sulla cartella Impostazioni azioni rapide e selezionare Open associated contents table.
    Impostazioni azioni rapide, Open associated contents table
    FIG 8 - Impostazioni azioni rapide, Open associated contents table
  • Nella nuova finestra di dialogo, viene visualizzato un elenco di messaggi che rappresentano le Azioni rapide create dall'utente.
  • Selezionare un messaggio e osservare la proprietà PR_ROAMING_XMLSTREAM.
    Azioni rapide
    FIG 9 - Azioni rapide
  • Eseguire un doppio clic su questa proprietà per visualizzare il nome dell'Azione rapida nella sezione Text.
    Nome azione rapida
    FIG 10 - Nome azione rapida
  • Per eseguire il backup di una singola azione, fare clic con il pulsante destro del mouse sul messaggio e scegliere Export message.
    Export message
    FIG 11 - Export message
  • Dall'elenco a discesa Format to save message selezionare MSG file (UNICODE) e fare clic su OK.
    Select format for saving message
    FIG 12 - Select format for saving message
  • Selezionare la cartella in cui si intende salvare il messaggio. É possibile modificare il nome con cui il file verrà salvato.
    Salva con nome
    FIG 13 - Salva con nome
  • Nella finestra di dialogo CopyTo cliccare su OK.
    CopyTo
    FIG 14 - CopyTo
  • Nella finestra di dialogo Tags To Exclude cliccare su OK.
    Tags To Exclude
    FIG 15 - Tags To Exclude


Ripristino Azioni rapide da backup

Per ripristinare le Azioni rapide da un backup:
  • In MFCMAPI posizionarsi sulla cartella Impostazioni azioni rapideCliccare, con il tasto destro del mouse, sulla cartella Impostazioni azioni rapide e selezionare Open associated contents table.
  • Dal menu Folder selezionare Import quindi cliccare su From MSG.
    Import from MSG
    FIG 16 - Import from MSG
  • Selezionare il file .MSG da importare e cliccare su Apri. É possibile selezionare più file o tutti i file contenuti nella cartella premendo la combinazione di tasti CTRL+A.
  • Nella finestra di dialogo Load MSG, verificare che nell'elenco a discesa Load style sia selezionata la voce Load message into current folder e cliccare su OK.
    Load MSG
    FIG 17 - Load MSG





giovedì 12 gennaio 2023

MS Outlook: Modificare l'ambito di ricerca tramite registro di sistema

Per impostazione standard Outlook esegue una ricerca in tutte le cartelle della cassetta postale corrente quando la ricerca viene avviata dalla Posta in arrivo. Se la ricerca viene avviata da un'altra cartella, la ricerca include solo gli elementi di quella cartella. Gli utenti possono comunque modificare l'ambito della ricerca agendo manualmente sull'apposita casella o tramite le opzioni di ricerca (File -> Opzioni -> Cerca) presenti in Outlook.
Outlook, Opzioni Cerca
FIG 1 - Outlook, Opzioni Cerca

L'ambito di ricerca può essere impostato anche tramite registro di sistema:
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio);
  • Posizionarsi sulla chiave di registro
    HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\Search
    dove al posto di xx va indicata la versione di office
  • Creare un nuovo valore DWORD 32bit e rinominarlo in DefaultSearchScope.
  • Cliccare, con il tasto destro del mouse, sul valore appena creato e selezionare Modifica.
  • Nella casella Dati valore specificare uno dei seguenti valori a seconda del comportamento desiderato
    0 - Impostazione predefinita. La ricerca in Outlook si comporta come sopra indicato.

    1 - Tutte le cassette postali. La ricerca viene eseguita su tutte le caselle di posta.

    2 - Cartella corrente. La ricerca viene eseguita all'interno della cartella corrente.

    3 - Cassetta postale corrente. La ricerca viene eseguita all'interno della casella di posta corrente.
  • Una volta impostato il valore desiderato, riavviare Outlook.
DefaultSearchScope
FIG 2 - DefaultSearchScope


Il valore può essere impostato anche tramite policy, in tal caso troveremo il valore DefaultSearchScope nel percorso
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\16.0\outlook\Search





martedì 10 gennaio 2023

MS Outlook: Impedire di aggiungere nuovi dati a un file .pst esistente

Per impedire agli utenti di aggiungere nuovi dati o contenuti a un file .pst esistente, è possibile aggiungete la voce PSTDisableGrow al Registro di sistema e impostate il suo valore ad 1. Per farlo, basta eseguire i seguenti passaggi:
  • Avviare l'Editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi sulla seguente chiave di registro
    HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\PST
    dove al posto xx.0 va indicata la versione di Office (ad es. 15.0 per Office 2013, 16.0 per Office 2016 e 2019);
  • Creare un nuovo valore DWORD (32 bit) e rinominarlo in PSTDisableGrow;
  • Fare clic con il pulsante destro del mouse sulla voce di registro PSTDisableGrow creata e selezionare Modifica;
  • Nella casella di Dati valore, digitare 1 e selezionare OK;
    La voce di registro PSTDisableGrow può essere impostata sui seguenti valori:
    0 - L'utente può aggiungere nuovi elementi a un file .pst esistente. Questo è il valore predefinito.
    1 - Non è possibile aggiungere nuovi contenuti o dati a un file .pst esistente.
    Outlook  PSTDisableGrow
    FIG 1 - Outlook  PSTDisableGrow
PSTDisableGrow può essere impostato anche tramite policy, in tal caso il valore verrà creato al seguente percorso nel registro di sistema:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\xx.0\Outlook\PST

Dopo aver assegnato a PSTDisableGrow  il valore 1, se si tenta di aggiungere un email al file pst verrà visualizzato il messaggio 
"Impossibile spostare gli elementi. Autorizzazione non idonea per eseguire l'operazione".
Impossibile spostare gli elementi
FIG 2 - Impossibile spostare gli elementi




mercoledì 21 dicembre 2022

MS Outlook: Impedire la connessione di file PST

Per evitare che gli utenti possano collegare un file .pst ad Outlook, aggiungere la voce di registro DisablePST e impostare il valore su 1 procedendo come indicato di seguito:
  • Avviare l'Editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi sulla seguente chiave di registro
    HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook
    dove al posto xx.0 va indicata la versione di Office (ad es. 15.0 per Office 2013, 16.0 per Office 2016 e 2019);
  • Creare un nuovo valore DWORD (32 bit) e rinominarlo in DisablePST;
  • Fare clic con il pulsante destro del mouse sulla voce di registro DisablePST creata e selezionare Modifica;
  • Nella casella di Dati valore, digitare 1 e selezionare OK;
    La voce di registro DisablePST può essere impostata sui seguenti valori:
    0 - Gli utenti possono aggiungere file .pst. Questo è il valore predefinito.
    1 - Gli utenti non possono aggiungere file .pst. I file .pst collegati ad Outlook prima dell'aggiunta di questo valore di registro, non verranno disconnessi e resteranno configurati in Outlook. Non sarà possibile aggiungere nuovi file .pst.

    2 Gli utenti possono aggiungere solo file .pst di condivisione esclusiva, come i file .pst di SharePoint.
    Outlook DisablePST
    FIG 1 - Outlook DisablePST


DisablePST può essere impostato anche tramite policy, in tal caso il valore verrà creato al seguente percorso nel registro di sistema:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\xx.0\Outlook





venerdì 29 luglio 2022

MS Outlook: Modificare il limite per l'elenco di completamento automatico

Come accennato nell'articolo MS Outlook: Abilitare/Disabilitare il completamento automatico, il numero di elementi contenuti nell'elenco di completamento automatico è limitato.

I limiti per le diverse versioni di Outlook sono i seguenti:
Outlook 2019: 1.000 elementi
Outlook 2016: 1.000 elementi
Outlook 2013: 1.000 elementi
Outlook 2010: 1.000 elementi
Outlook 2007: 2.000 elementi
Outlook 2003: 1.000 elementi

Agendo tramite il registro di sistema è possibile, anche se non consigliabile, modificare tale limite:
  • Chiudere Outlook;
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi su
    HKEY_CURRENT_USER\Software\Microsoft\Office\<x.x>\Outlook\AutoNameCheck
    dove al posto di <x.x> va specificata la versione di Microsoft Office in uso
    - Outlook 2019 = 16.0
    - Outlook 2016 = 16.0
    - Outlook 2013 = 15.0
    - Outlook 2010 = 14.0
    - Outlook 2007 = 12.0
    - Outlook 2003 = 11.0 
    Se la chiave AutoNameCheck non è presente, crearla manualmente e selezionarla
  • Creare, se non presente, un nuovo valore DWORD (32 bit) con nome MaxNickNames
  • Assegnare a MaxNickNames il valore, in formato decimale, desiderato (ad es. inserire 1200, in formato decimale, per portare il limite a 1200 elementi).
    Regedit, MaxNickNames
    FIG 1 - Regedit, MaxNickNames

  • Avviare Outlook.

MaxNickNames può essere utilizzato anche per ridurre il numero di elementi memorizzato dal completamento automatico specificando un valore inferiore.





giovedì 21 luglio 2022

MS Outlook: Abilitare/Disabilitare il completamento automatico

La funzionalità di completamento automatico, fornita dal client di posta MS Outlook, viene utilizzata sia per il controllo automatico dei nomi sia per il completamento automatico del nome durante la digitazione. L'elenco viene aggiornato automaticamente quando si inviano messaggi e-mail da Outlook ed è composto da indirizzi SMTP, voci LegacyExchangeDN e nomi visualizzati per gli utenti a cui sono stati precedentemente inviati messaggi e-mail. L'elenco di completamento automatico di Outlook non è in condivisione con Outlook Web App (OWA): OWA gestisce un proprio elenco di completamento automatico.

Il numero massimo di elementi presenti all'interno del completamento automatico è limitato:
Outlook 2019: 1.000 elementi
Outlook 2016: 1.000 elementi
Outlook 2013: 1.000 elementi
Outlook 2010: 1.000 elementi
Outlook 2007: 2.000 elementi
Outlook 2003: 1.000 elementi

Una volta raggiunto il limite, Outlook utilizza un algoritmo interno basato sul coefficiente di utilizzo per stabilire quali elementi rimuovere dall'elenco.

Abilitare/Disabilitare il completamento automatico da GUI

  • Dal menu File di Outlook cliccare su Opzioni;
  • Nella finestra Opzioni Outlook selezionare la scheda Posta (sul lato sinistro della finestra);
  • Scorrere l'elenco delle impostazioni fino alla sezione Invio messaggi;
  • Selezionare/deselezionare la casella "All'immissione di testo nelle righe A, Cc e Ccn, usa l'elenco di completamento automatico per suggerire i nomi" per abilitare/disabilitare la funzionalità di completamento automatico.
    MS Outlook, Completamento automatico
    FIG 1 - MS Outlook, Completamento automatico

Abilitare/Disabilitare il completamento automatico tramite registro di sistema

  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi su
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Preferences
  • Creare, se non presente, un nuovo valore DWORD (32 bit) con nome ShowAutoSug;
  • Assegnare a ShowAutoSug il valore 0 per disattivare il completamento automatico oppure 1 per attivarlo.
    Regedit, ShowAutoSug
    FIG 2 - Regedit, ShowAutoSug

  • Riavviare Outlook.

Di seguito è possibile scaricare i file .reg per Abilitare/Disabilitare il completamento automatico di Outlook




martedì 26 aprile 2022

PowerShell: Attivare/Disattivare la funzione Posta in arrivo Evidenziata di Outlook

La funzione Posta in arrivo Evidenziata di Outlook separa la posta in arrivo in due schede: Evidenziata, contenente le email considerate più importanti, ed Altra contenente le restanti email. Non sempre questa separazione funziona correttamente e potremmo ritrovarci con email importanti spostate nella scheda Altra.

In MS Outlook per Windows, Posta in arrivo Evidenziata è disponibile solo per gli account Microsoft 365, Exchange e Outlook.com. La funzione può essere attivata/disattivata in maniera molto semplice da Outlook selezionando la cartella Posta in arrivo e cliccando sull'apposito pulsante presente nel menu Visualizza.
Posta in arrivo Evidenziata
FIG 1 - Posta in arrivo Evidenziata


L'attivazione/disattivazione di tale funzionalità in Outlook viene controllata dal valore 000b04a5 presente nel registro di sistema all'interno di una delle sotto-chiavi del profilo di posta. Il nome della sotto-chiave di registro contenente tale valore, per questioni di sicurezza, varia e va ricercata all'interno della chiave
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Profiles\<nome_profilo_Outlook>

L'operazione può essere automatizzata con il seguente script PowerShell. Lo script va a cercare il valore 000b04a5 all'interno del profilo Outlook predefinito e chiede all'utente se disattivare/attivare la funzione. I commenti aiutano nella comprensione del codice.
 # Percorso chiavi di registro e profili relativi ad Outlook   
  $outlook = "HKCU:\Software\Microsoft\Office\16.0\Outlook"   
  # Variabili contenenti i valori binari per l'attivazione/disattivazione della funzione Posta Evidenziata   
  $Enable=([byte[]](0x01,0x00))   
  $Disable=([byte[]](0x00,0x00))   
  # Verifico il profilo outlook predefinito   
  # Verifico se è presente il valore stringa DefaulProfile   
  if ((Get-ItemProperty -Path $outlook -Name "DefaultProfile" -ErrorAction SilentlyContinue)){   
    # Recupero il valore contenuto in DefaultProfile   
    $defaultProfile = (Get-ItemProperty -Path $outlook -Name "DefaultProfile").'DefaultProfile'   
    # Se DefaulProfile è vuoto allora non è specificato un profilo outlook predefinito   
    if ($defaultProfile -ne ""){   
         $CurrentProfile = "$Outlook" + '\Profiles\'+ "$defaultProfile" + '\*'   
         # All'interno del profilo outlook predefinito ricerco il valore 000b04a5   
         $FocusValue = (Get-ItemProperty -Path $CurrentProfile -Name "000b04a5" -ErrorAction SilentlyContinue).'000b04a5'   
         # Se il valore è 1 allora la funzione Posta Evidenziata è attiva   
         If ($FocusValue -eq "1"){   
          write-host "La funzione 'Mostra posta in arrivo evidenziata' risulta attiva"   
          # Chiedo all'utente se desidera disattivare la funzione Posta Evidenziata   
          $confirmation = Read-Host "Si desidera disattivarla?[S/N]"   
          # Se l'utente risponde in maniera affermativa, la funzione viene disattivata   
          if ($confirmation -eq 's') {   
            Set-ItemProperty -Path $CurrentProfile -Name "000b04a5" -Value $Disable -ErrorAction SilentlyContinue   
            write-host "La funzione 'Mostra posta in arrivo evidenziata' e' stata disattivata"   
          }    
         }   
         else{   
          # La funzione Posta Evidenziata è disattivata   
          write-host "La funzione 'Mostra posta in arrivo evidenziata' non risulta attiva"   
          # Chiedo all'utente se desidera attivare la funzione Posta Evidenziata   
          $confirmation = Read-Host "Si desidera attivarla?[S/N]"   
          # Se l'utente risponde in maniera affermativa, la funzione viene attivata   
            if ($confirmation -eq 's') {   
            Set-ItemProperty -Path $CurrentProfile -Name "000b04a5" -Value $Enable -ErrorAction SilentlyContinue   
            write-host "La funzione 'Mostra posta in arrivo evidenziata' e' stata attivata"   
          }   
     
         }   
    }   
    # Il valore stringa DefaulProfile è vuoto   
    else{   
       write-host "Non risulta impostato alcun profilo Outlook predefinito"   
    }   
  }   
  # Il valore stringa DefaulProfile non è presente   
  else{   
    write-host "Il valore DefaulProfile non risulta presente."   
  }   

Dal seguente link è possibile scaricare lo script PowerShell




domenica 13 febbraio 2022

MS Outlook: Determinare il percorso della cartella di un'e-mail trovata nei risultati della ricerca

Ottenere il nome della cartella in cui si trova un messaggio non è molto ovvio in Outlook e ancora più difficile è determinare il percorso esatto della cartella. Nei risultati della ricerca Outlook può visualizzare il nome della cartella in cui è stata trovata l'e-mail ma se più cartelle hanno lo stesso nome o se, nel caso di un numero elevato di cartelle, non ricordiamo la sua posizione tale informazione può rivelarsi inutile.

In questo articolo verranno illustrati 2 metodi per individuare l'intero percorso della cartella contenente l'e-mail di nostro interesse.

Metodo 1
Il primo metodo consiste in un piccolo trucco che sfrutta lo strumento di ricerca avanzata:
  • Effettuare la ricerca, quindi eseguire un doppio clic sul messaggio di proprio interesse per aprirlo nella sua finestra.
  • Premere la combinazione di tasti CTRL+SHIFT+F per aprire la funzione di ricerca avanzata.
  • Nel campo "In" viene mostrato il nome della cartella che contiene l'e-mail.
    Ricerca avanzata
    FIG 1 - Ricerca avanzata

  • Cliccando sul pulsante "Sfoglia" verrà mostrata dove si trova esattamente nella gerarchia di cartelle.
    Percorso completo cartella
    FIG 2 - Percorso completo cartella


Metodo 2
Il secondo metodo prevede l'utilizzo di VBA.
  • Avviare Microsoft Visual Basic, Application Edition tramite la combinazione di tasti ALT+F11.
  • Nella visualizzazione ad albero del progetto, sul lato sinistro della finestra, selezionare ThisOutlookSession.
  • Copiare e incollare il seguente codice.
     Public Sub GetEmailFolderPath()  
      Dim obj As Object  
      Dim Msg$  
      Dim Path As Outlook.MAPIFolder  
      Set obj = Application.ActiveWindow  
      'verifica se l'e-mail è aperta in una finestra o è stata selezionata dall'elenco messaggi  
      If TypeOf obj Is Outlook.Inspector Then  
       Set obj = obj.CurrentItem  
      Else  
       Set obj = obj.Selection(1)  
      End If  
      'Recupera il path completo dell'email  
      Set Path = obj.Parent  
      Msg = "La posizione è: " & Path.FolderPath & vbCrLf & "Passare alla cartella?"  
      'Chiede se si intende accedere alla cartella contenente l'e-mail  
      If MsgBox(Msg, vbYesNo) = vbYes Then  
       'Seleziona la cartella contenente l'e-mail  
       Set Application.ActiveExplorer.CurrentFolder = Path  
      End If  
     End Sub  
       
    
  • Salvare il codice cliccando sull'apposita icona e ritornare alla finestra di Outlook.
    Microsoft Visual Basic, Application Edition
    FIG 3 - Microsoft Visual Basic, Application Edition

  • Dal menu File->Opzioni selezionare Personalizzazione barra multifunzione.
  • Nell'elenco Schede principali (sulla destra) aggiungere il segno di spunta alla voce Sviluppo e cliccare su OK.
    Attivazione scheda Sviluppo
    FIG 4 - Attivazione scheda Sviluppo

  • A questo punto effettuare la ricerca, quindi selezionare l'e-mail dall'elenco messaggi o aprirla in una nuova finestra.
  • Dalla scheda Sviluppo cliccare su Macro (o premere la combinazione ALT+F8) e selezionare la macro creata precedentemente che avrà un nome simile a Progetto1.ThisOutlookSession.GetEmailFolderPath.
    Macro GetEmailFolderPath
    FIG 5 - Macro GetEmailFolderPath

  • Verrà visualizzato il path completo dell'e-mail. Cliccando su Si, si verrà posizionati sulla cartella contenente l'email.
    Path completo e-mail
    FIG 6 - Path completo e-mail




mercoledì 19 gennaio 2022

MS Outlook: Macro per stampare un elenco di cartelle di un file di dati

In alcune circostanze può essere utile ottenere l'elenco delle sottocartelle presenti all'interno di un file di dati di Outlook. Di seguito viene mostrata una macro VBA adatta allo scopo. La macro ottiene un elenco dei nomi delle sottocartelle presenti in un file di dati a partire dalla cartella selezionata. L'elenco viene inserito in un nuovo messaggio pronto per essere inviato.

 ' strFoldersList è una stringa multiriga contenente i nomi delle cartelle   
  Public strFoldersList As String   
  ' lCountFolders andrà a contenere il numero di cartelle elaborate   
  Public lCountFolders As Long   
     
     
  Public Sub GetFolderNames()   
   Dim olApp As Outlook.Application   
   Dim olSession As Outlook.NameSpace   
   Dim olStartFolder As Outlook.MAPIFolder   
      
   lCountFolders = 0   
      
   Set olApp = New Outlook.Application   
   Set olSession = olApp.GetNamespace("MAPI")     
     
   'Consente all'utente di selezionare la cartella da cui iniziare la ricerca   
   Set olStartFolder = olSession.PickFolder   
      
   'Verifica se l'utente ha selezionato una cartella da cui partire   
   If Not (olStartFolder Is Nothing) Then   
    ' Se è stata selezionata una cartella, avvia il processo di ricerca.   
    ProcessFolder olStartFolder   
      
    strFoldersList = strFoldersList & vbCrLf & "Totale cartelle elaborate:" & vbTab & lCountFolders   
    ' Crea un nuovo messaggio email contenente l'elenco delle cartelle   
    Set ListFolders = Application.CreateItem(olMailItem)   
    ListFolders.Body = strFoldersList   
    ListFolders.Display     
   End If   
  ' Resetta il contenuto della stringa per una nuova ricerca   
  strFoldersList = ""   
  End Sub   
     
     
  Sub ProcessFolder(CurrentFolder As Outlook.MAPIFolder)   
       
   Dim i As Long   
   Dim olNewFolder As Outlook.MAPIFolder   
   Dim olTempFolder As Outlook.MAPIFolder   
   Dim olTempFolderPath As String   
   Dim lItemsInFolder As Long   
      
   lItemsInFolder = 0   
   ' Esegue un loop sulle cartelle.   
   For i = 1 To CurrentFolder.Folders.Count   
       
    Set olTempFolder = CurrentFolder.Folders(i)   
       
    olTempFolderPath = olTempFolder.FolderPath   
     
   ' Verifica il numero di elementi contenuti nella cartella   
    lItemsInFolder = olTempFolder.Items.Count   
       
       
    ' Crea una stringa multiriga con i nomi delle cartelle.    
    ' olTempFolder contiente il nome della cartella   
    strFoldersList = strFoldersList & vbCrLf & olTempFolderPath & vbTab & "(Items:" & lItemsInFolder & ")"   
       
    lCountFolders = lCountFolders + 1   
       
   Next   
   ' Esegue la ricerca anche nelle sottocartelle della cartella corrente   
   For Each olNewFolder In CurrentFolder.Folders   
     ProcessFolder olNewFolder   
   Next   
      
      
  End Sub   

La macro è molto semplice e i commenti consentono di capire come funziona.  La procedura principale è GetFolderNames() che consente all'utente di selezionare la cartella su cui operare. Successivamente viene richiamata la procedura ProcessFolder che, partendo dalla cartella selezionata dall'utente, elabora tutte le sottocartelle.


Come utilizzare la macro

  • Per utilizzare la macro avviare la finestra Microsoft Visual Basic, Application Edition premendo, dalla finestra principale di Outlook, la combinazione di tasti ALT+F11.
  • Cliccare, con il tasto destro del mouse, su Progetto1 quindi cliccare su Inserisci e selezionare Modulo.
    VBA, Inserisci modulo
    FIG 1 - VBA, Inserisci modulo

  • Copiare il codice sopra riportato e incollarlo nella nuova finestra. Per salvare il codice cliccare sull'icona del dischetto o premere la combinazione di tasti CTRL+S
    VBA, Modulo (codice)
    FIG 2 - VBA, Modulo (codice)

  • Per eseguire la macro cliccare sul tasto play (o premere F5), selezionare la cartella desiderata e premere OK
    Seleziona cartella
    FIG 3 - Seleziona cartella

  • Verrà creato un nuovo messaggio contenente l'elenco delle cartelle. Per ciascuna cartella verrà visualizzato il numero di elementi contenuti e, alla fine dell'elenco, verrà riportato il numero di cartelle elaborato.
    Messaggio contenente l'elenco cartelle
    FIG 4 - Messaggio contenente l'elenco cartelle



Visualizzare la dimensione di ciascuna cartella

Per visualizzare la dimensione di ciascuna cartella basta apportare una semplice modifica al codice della procedura ProcessFolder come mostrato di seguito. Apportando tale modifica bisogna considerare che il tempo di elaborazione della macro può aumentare notevolmente con l'aumentare delle cartelle e item da elaborare.
 Sub ProcessFolder(CurrentFolder As Outlook.MAPIFolder)   
       
   Dim i As Long   
   Dim olNewFolder As Outlook.MAPIFolder   
   Dim olTempFolder As Outlook.MAPIFolder   
   Dim olTempFolderPath As String   
   Dim lItemsInFolder As Long   
    Dim intSize As Long   
   Dim objItems As Items   
   Dim objItem As Object      
      
   lItemsInFolder = 0   
   ' Esegue un loop sulle cartelle.   
   For i = 1 To CurrentFolder.Folders.Count   
       
    Set olTempFolder = CurrentFolder.Folders(i)   
       
    olTempFolderPath = olTempFolder.FolderPath   
     
   ' Verifica il numero di elementi contenuti nella cartella   
    lItemsInFolder = olTempFolder.Items.Count   
     
       Set objItems = olTempFolder.Items   
       
       intSize = 0   
   ' Somma la dimensione di ogni item presente nella cartella   
   For Each objItem In objItems   
    ' Debug.Print olcount, objItem.Subject, objItem.Size   
     intSize = intSize + objItem.Size   
    Next   
       
       
    ' Crea una stringa multiriga con i nomi delle cartelle.    
    ' olTempFolder contiente il nome della cartella   
    strFoldersList = strFoldersList & vbCrLf & olTempFolderPath & vbTab & "(Items:" & lItemsInFolder & ") (Dimensione:" & Int(intSize / 1024) & " KB)"   
       
    lCountFolders = lCountFolders + 1   
       
   Next   
   ' Esegue la ricerca anche nelle sottocartelle della cartella corrente   
   For Each olNewFolder In CurrentFolder.Folders   
     ProcessFolder olNewFolder   
   Next   
      
      
  End Sub   


Esportare l'elenco in un file CSV

Se al posto di creare un nuovo messaggio di posta si intende salvare l'elenco delle cartelle all'interno di un file CSV modificare la procedura GetFolderNames() come indicato di seguito.
 Public Sub GetFolderNames()   
   Dim olApp As Outlook.Application   
   Dim olSession As Outlook.NameSpace   
   Dim olStartFolder As Outlook.MAPIFolder   
      
   lCountFolders = 0   
      
   Set olApp = New Outlook.Application   
   Set olSession = olApp.GetNamespace("MAPI")   
      
   'Consente all'utente di selezionare la cartella da cui iniziare la ricerca   
   Set olStartFolder = olSession.PickFolder   
      
   'Verifica se l'utente ha selezionato una cartella da cui partire   
   If Not (olStartFolder Is Nothing) Then   
   ' Se è stata selezionata una cartella, avvia il processo di ricerca.   
   ProcessFolder olStartFolder   
      
   ' Crea un file CSV nel percorso specificato   
  strPath = Environ("USERPROFILE") & "\Documents\ElencoCartelleOutlook.csv"   
   Set fso = CreateObject("Scripting.FileSystemObject")   
   Set Fileout = fso.CreateTextFile(strPath, True, False)   
   Fileout.WriteLine strFoldersList   
   End If   
  ' Resetta il contenuto della stringa per una nuova ricerca   
  strFoldersList = ""   
  End Sub