Я пытаюсь получить фактический адрес электронной почты «Кому:», на который электронное письмо отправляется с помощью EWS 2013. Поэтому я могу использовать различные методы в зависимости от адреса электронной почты, на который отправлено письмо. Моя проблема похожа на этот вопрос Заголовок «Кому» API веб-служб Exchange (EWS) для псевдонима , в котором отправляемый псевдоним заменяется на основной адрес электронной почты для почтового ящика.
Мне удалось получить адрес To: в заголовках транспорта, используя вышеуказанную статью, но только если электронное письмо было отправлено за пределы организации обмена. Если электронное письмо отправлено другим пользователем в домене, в заголовках отображается только основной адрес электронной почты. Как узнать фактический адрес электронной почты, на который было отправлено сообщение .. ??
ExtendedPropertyDefinition PR_TRANSPORT_MESSAGE_HEADERS = new ExtendedPropertyDefinition(0x007D, MapiPropertyType.String);
PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties) { PR_TRANSPORT_MESSAGE_HEADERS, ItemSchema.MimeContent };
Item NewItem = Item.Bind(Service, itemEvent.ItemId, propSet);
if (NewItem is EmailMessage)
{
NewItem.Load(propSet);
Object valHeaders = null;
string emailaddress = "";
if (NewItem.TryGetProperty(PR_TRANSPORT_MESSAGE_HEADERS, out valHeaders))
{
//Console.WriteLine((String)valHeaders);
Regex regex = new Regex(@"for.*<(.+)>|To:.*<(.+)");
Match match = regex.Match(valHeaders.ToString());
if (match.Groups[0].Value.ToString().Contains("for"))
{
emailaddress = match.Groups[1].Value;
}
if (match.Groups[0].Value.ToString().Contains("To:"))
{
emailaddress = match.Groups[2].Value;
}
}
if ("this@domain.com" == emailaddress)
{
dothis();
}
if ("that@domain.com" == emailaddress)
{
dothat();
}
}