2013-01-09 1 views
1

작은 Outlook 추가 기능을 개발하여 선택한 모임에 대한 모든 정보를 가져 와서이 정보를 사내 포털에 푸시합니다. RequiredAttendees 부분을 제외한 구현이 완료되었습니다. 이유는 모르겠지만 Interop.Outlook.AppointmentItem 개체는 참석자의 전체 이름 (문자열) 만 반환합니다. 참석자의 이메일 주소에 더 관심이 있습니다.Outlook Add-in : 선택한 모임의 참석자 전자 메일 주소 가져 오기

try 
{ 
    AppointmentItem appointment = null; 
    for (int i = 1; i < Globals.ThisAddIn.Application.ActiveExplorer().Selection.Count + 1; i++) 
    { 
     Object currentSelected = Globals.ThisAddIn.Application.ActiveExplorer().Selection[i]; 
     if (currentSelected is AppointmentItem) 
     { 
      appointment = currentSelected as AppointmentItem; 
     } 
    } 

    // I am only getting attendees full name here 
    string requiredAttendees = appointment.RequiredAttendees; 

} 
catch (System.Exception ex) 
{ 
    LogException(ex); 
} 

내가 RequiredAttendees 속성이 Microsoft.Office.Interop.Outlook._AppointmentItem 인터페이스에서 문자열로 정의되어 볼 수 있습니다 여기에 문제를 복제하는 내 코드입니다.

// 
// Summary: 
//  Returns a semicolon-delimited String (string in C#) of required attendee 
//  names for the meeting appointment. Read/write. 
[DispId(3588)] 
string RequiredAttendees { get; set; } 

누군가가 나이 문제를 해결하는 데 도움이 또는 어떤 해결하기 위해 참석자의 이메일 주소를 제공 할 수 있다면 크게 감사합니다.

감사합니다.

(테스트하지)이 같은

답변

3

뭔가 :

// Recipients are not zero indexed, start with one 

for (int i = 1; i < appointment.Recipients.Count - 1; i++) 
{ 
    string email = GetEmailAddressOfAttendee(appointment.Recipients[i]); 
} 


// Returns the SMTP email address of an attendee. NULL if not found. 
function GetEmailAddressOfAttendee(Recipient TheRecipient) 
{ 

    // See http://msdn.microsoft.com/en-us/library/cc513843%28v=office.12%29.aspx#AddressBooksAndRecipients_TheRecipientsCollection 
    // for more info 

    string PROPERTY_TAG_SMTP_ADDRESS = @"http://schemas.microsoft.com/mapi/proptag/0x39FE001E"; 

    if (TheRecipient.Type == (int)Outlook.OlMailRecipientType.olTo) 
    { 
     PropertyAccessor pa = TheRecipient.PropertyAccessor; 
     return pa.GetProperty(PROPERTY_TAG_SMTP_ADDRESS); 
    } 
    return null; 
} 
+0

우리의 경우 조건'경우 (TheRecipient.Type == (int)를 Outlook.OlMailRecipientType.olTo)', 우리가 얻을 수있는 이메일 주소를 제거하는 경우 선택 참석자. – digitguy