Получить на адрес электронной почты, используя EWS для обмена 2013 - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь получить фактический адрес электронной почты «Кому:», на который электронное письмо отправляется с помощью 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();
                        }
                    }

1 Ответ

0 голосов
/ 03 мая 2020
Решение

- создать группу рассылки и добавить к ней почтовый ящик, а не добавлять псевдоним непосредственно под почтовым ящиком.

...