Domanda

Qualcuno sa come abilitare programmazione / disabilitare lo stato attuale della auto-responder out-of-office in Outlook 2007?

già cercato il browser oggetto in VS 2008 e trovato il Microsoft.Office.Interop.Outlook.OlBusyStatus enumerazione, ma non ho trovato alcuna classe o qualsiasi altra cosa con questo.

Qualunque idea è apprezzato, grazie e saluti

È stato utile?

Soluzione

UPDATE: Aggiornato il codice qui sotto utilizzando il codice di esempio tratto da questo post del blog che lavorerà meglio in una più ampia varietà di installazioni di Outlook (ad esempio quelli che utilizzano sia Exchange e PST o l'accesso a più cassette postali di Exchange).

Ecco il codice che ha lavorato per me su Outlook 2007, per impostare lo stato Fuori sede da un EXE esterno (per Outlook):

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.NameSpace ns = app.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

Assicurarsi che non sta eseguendo che il codice come amministratore e Outlook come non Administrator-- altrimenti si può ottenere un errore di sicurezza legati a Vista.

Si noti che si aprirà finestre di dialogo di sicurezza all'interno di Outlook per assicurarsi che l'utente è OK con voi l'accesso al modello a oggetti di Outlook. Questo è normale quando modello oggetto prospettiva è accessibile da un EXE esterna.

Se, tuttavia, si sta accedendo al modello di oggetti da un componente aggiuntivo, il codice di cui sopra non è completamente corretta: invece di creare un nuovo oggetto Outlook.Application tramite il costruttore, si è necessario per ottenere un riferimento a l'oggetto Outlook.Application di fiducia da dentro il componente aggiuntivo, in questo modo:

Microsoft.Office.Interop.Outlook.NameSpace ns = this.Application.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

A proposito, c'è una buona articolo di MSDN in materia di sicurezza per i componenti aggiuntivi, che può essere utile se si esegue in finestre di dialogo di sicurezza o errori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top