Нет ли способа получить emailId отправителя из данных календаря Outlook, используя Microsoft.Office.Interop, c # .net - PullRequest
0 голосов
/ 31 июля 2009

Я хочу получить emailId отправителя.

Я могу прочитать все данные календаря по указанному ниже коду, но не по emailId отправителя.

using Microsoft.Office.Interop.Outlook;

Microsoft.Office.Interop.Outlook.Application outlook = new Application();
Microsoft.Office.Interop.Outlook.NameSpace oNS = outlook.GetNamespace("MAPI");
oNS.Logon(Missing.Value, Missing.Value, true, true);
string currentUserEmail = oNS.CurrentUser.Address;
string currentUserName = oNS.CurrentUser.Name;
// Get the Calendar folder.
Microsoft.Office.Interop.Outlook.MAPIFolder objMAPIFolder =oNS.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
//Get the Sent folder
MAPIFolder sentFolder = oNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail);

Items sentMailItems = sentFolder.Items;

Items items = objMAPIFolder.Items;        

foreach (object item in sentMailItems)
{     
    if (item is MailItem)
    {
        MailItem oneMail = item as MailItem;        
        string mailContent = oneMail.HTMLBody;

        //item.sender is not available
    }    
}

foreach (object item in items)
{  
    if (item is Microsoft.Office.Interop.Outlook.AppointmentItem)               
    {
        Microsoft.Office.Interop.Outlook.AppointmentItem mitem = item as     Microsoft.Office.Interop.Outlook.AppointmentItem;
        string subject = mitem.Subject;
        DateTime start = mitem.Start;
        DateTime end = mitem.End;
        string body = mitem.Body;
        string location = mitem.Location;
        string entryId = mitem.EntryID;   

        //sender email id not available   
        //string senderEmail = mitem.sender;
    }
}
oNS.Logoff();

Но в любом случае, неважно, читаете ли вы встречи или отправляете электронные письма из папок, я не могу получить идентификатор электронной почты отправителя.

есть ли у кого-нибудь решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 31 июля 2009

Я думаю, вы можете получить имя от mitem.organizser, а затем посмотреть на Recipients, чтобы найти совпадение.

Затем найдите адрес электронной почты через свойство mapi PR_SMTP_ADDRESS, используя PropertyAccessor.

0 голосов
/ 24 февраля 2017

AppoitnmentItem.GetOrganizer () не обязательно является отправителем встречи. В общем календаре (руководитель / секретарь) они могут отличаться.

Вы можете получить отправителя на прием, используя AppointmentItem.SendUsingAccount

Но из моего опыта (outlook 2010) это свойство возвращает значение NULL, если вы не вошли в систему как отправитель. Но в любом случае полезно проверить, отличается ли организатор от отправителя.

...