문제

Outlook 2007에서 사무실 외 자동 응답의 실제 상태를 프로그래밍적으로 활성화/비활성화하는 방법을 아는 사람이 있습니까?

2008 년 대 객체 브라우저를 이미 검색했고 열거를 발견했습니다. Microsoft.Office.Interop.Outlook.OlBusyStatus 그러나 나는 이것을 사용하는 수업이나 다른 수업을 찾지 못했습니다.

모든 아이디어는 감사합니다. 감사합니다

도움이 되었습니까?

해결책

업데이트 :에서 조정 된 샘플 코드를 사용하여 아래 코드를 업데이트했습니다. 이 블로그 게시물 다양한 Outlook 설치 (예 : Exchange 및 PST를 사용하거나 여러 교환 사서함에 액세스하는 것)에서 더 잘 작동합니다.

다음은 Outlook 2007에서 저를 위해 일한 코드입니다. 외부 (Outlook)에서 OOF 상태를 설정하기 위해 다음과 같습니다.

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

해당 코드를 관리자로 실행하지 않아야하고 비 관리자로 Outlook을 실행하십시오. 그렇지 않으면 Vista에서 보안 관련 오류가 발생할 수 있습니다.

Outlook Object 모델에 액세스 할 수 있도록 사용자가 괜찮을 수 있도록 Outlook 내부의 보안 대화 상자를 나타냅니다. Outlook Object 모델이 외부 EXE에서 액세스 할 때 정상입니다.

그러나 애드 인에서 객체 모델에 액세스하는 경우 위의 코드가 완전히 정확하지 않습니다. 새 Outlook.application 객체를 생성자를 통해 작성하는 대신 신뢰할 수있는 Outlook에 대한 참조가 있어야합니다. 다음과 같은 추가 기능 내부의 응용 객체 :

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, 좋은 것이 있습니다 MSDN 기사 Add-ins의 보안에서 보안 대화 상자 또는 오류가 발생하는 경우 유용 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top