OUTLOOK 2016 AddIn: измененный MailItem в InBox, невозможно сохранить в пользовательской форме Outlook (чтение макета) - PullRequest
0 голосов
/ 10 января 2019

У меня проблема с разработкой Office 365 Outlook Addin (Desktop). Мне нужно изменить некоторые свойства MailItem, открытого с помощью пользовательской формы (форма, разработанная в Outlook, экспортированная в виде файла OFS и импортированная в проект Visual Studio AddIn), но вызов метода «Сохранить» для объекта MailItem не работает, свойство «Сохранено» остается «ложным», и когда я закрываю инспектор, Outlook предлагает сохранить текущий элемент. При вызове «Сохранить» не возникло никаких исключений или сообщений об ошибках. Но если я попытаюсь вызвать «Сохранить» в тот же MailItem в теле AddIn, сообщение будет сохранено. Я попытался написать простой тест «addin» и получил тот же результат, но я не могу понять это поведение.

Примечание: с предыдущей версией Outlook у меня не было этой проблемы. Любая идея? Большое спасибо!

В настоящее время используется VS2017, C #, .NET Framework 4.5, Interop library version 15.0


    // ADD-IN BODY

    private Outlook.Inspectors inspectors;
    public static MailItem CurrentMailItem;

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {     
        inspectors = this.Application.Inspectors;
        inspectors.NewInspector += Inspectors_NewInspector;
    }

    private void Inspectors_NewInspector(Inspector Inspector)
    {

        if (Inspector.CurrentItem is MailItem)
        {
            MailItem item = (MailItem)Inspector.CurrentItem;

            item.MessageClass = "IPM.Note.MyReader";
            item.Save();
            bool saved = item.Saved;
            Marshal.ReleaseComObject(item);
            item = null;
        }
    }

    // CUSTOM FORM:

    private void FormRegion2_FormRegionShowing(object sender, System.EventArgs e)
    {
        // from this.OutlookItem
        MailItem item = this.OutlookItem as MailItem;
        item.Save();
        bool saved = item.Saved; // <== SAVED=FALSE!

        // from global variable (static)    
        ThisAddin.CurrentMailItem.Save();   
        saved = ThisAddin.CurrentMailItem.Saved; // <=== SAVED=FALSE!!!!
    }  

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я думаю, что это проблема с созданной мной специальной формой или проблема совместимости с Outlook 2016 (та же самая форма, работающая с Outlook 2013)

Шаги к разрешению:

Это не окончательное решение, потому что теперь я должен воссоздать форму в Outlook 2016, и я не уверен, что она работает с предыдущей версией Office. Кроме того, у дизайнера Outlook 2016 есть некоторые проблемы с размером шрифта… я не могу изменить размер шрифта на «8» для любой метки, присутствующей в форме.

0 голосов
/ 13 января 2019

Кажется, вы используете неправильное событие NewInspector для изменения класса сообщения. Посмотрите на эту тему

...