При подключении к Outlook.exe через Microsoft.Office.Interop.Outook и итерации MailItems, MailItem.Recipients всегда пусты - PullRequest
0 голосов
/ 31 октября 2019

У меня есть консольное приложение C #, использующее сборку Microsoft.Office.Interop.Outlook 2016 года, и в то время как оно успешно перебирает PST-файл, который прикрепляется к профилю машины по умолчанию;он пытается извлечь свойство / коллекцию Recipients во время итерации каждого MailItem, но подозрительно у каждого почтового элемента есть пустое свойство «Recipients».

Примечательно: файлы .pst экспортировались через «Безопасность и соответствие в Exchange Online», а затем сжимались с помощью инструмента «PST Compress». Моим основным подозреваемым является PST Compress, так как я не могу найти никого, у кого есть проблемы с очень простым кодом, показанным здесь (мой код выглядит как Получите адрес электронной почты получателя ).

private void GetSMTPAddressForRecipients(Outlook.MailItem mail)
{
    const string PR_SMTP_ADDRESS =
        "http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
    Outlook.Recipients recips = mail.Recipients;
    foreach (Outlook.Recipient recip in recips)
    {
        Outlook.PropertyAccessor pa = recip.PropertyAccessor;
        string smtpAddress =
            pa.GetProperty(PR_SMTP_ADDRESS).ToString();
        Debug.WriteLine(recip.Name + " SMTP=" + smtpAddress);
    }
}

Я исключил проверку подлинности Exchange и сборку Interop, поскольку извлечение других данных в MailItem работает должным образом.

Любая помощь или подтверждение других людей, испытывающих пустые Получатели в MailItems, были бы очень полезны.

...