Pergunta

Alguém sabe como ativar / desativar o estado real do out-of-office auto-responder no Outlook programaticamente 2007?

Já procurou o navegador objeto no VS 2008 e encontrou o Microsoft.Office.Interop.Outlook.OlBusyStatus enumeração, mas eu não encontrar qualquer classe ou qualquer outra coisa com isso.

Qualquer ideia é apreciada, Obrigado e cumprimentos

Foi útil?

Solução

UPDATE: Atualizado o código abaixo utilizando código de exemplo adaptado de este post que irá funcionar melhor em uma ampla variedade de instalações do Outlook (por exemplo, aqueles usando o Exchange e PST ou acessar várias caixas de correio Exchange).

O código aqui que trabalhou para mim em Outlook 2007, para definir o status de ausência temporária de um externo (para o Outlook) EXE:

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;
    }
}

Certifique-se de que você não está executando esse código como administrador e perspectivas como não Administrator-- caso contrário você pode obter um erro de segurança relacionadas com o Vista.

Note que ele irá aparecer diálogos de segurança dentro do Outlook para garantir que o usuário está OK com você acessar o modelo de objeto Outlook. Isso é normal quando modelo outlook objeto é acessado a partir de um EXE externo.

Se, no entanto, você está acessando o modelo de objeto de um add-in, o código acima não é totalmente correta: em vez de criar um novo objeto Outlook.Application através do construtor, você que você precisa para obter uma referência para o objeto Outlook.Application confiável de dentro do seu add-in, como este:

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;
    }
}

BTW, há uma boa artigo MSDN em segurança para add-ins, que podem ser úteis se você tiver diálogos de segurança ou erros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top