Вопрос

Я написал этот маленький добавьте MS Outlook 2003 VSTO, используя C # и Visual Studio 2008. Он предназначен для проверки каждого почтового элемента, отправляемого на слово «Прикрепить» в корпусе, а если найдено, то проверьте количество вложений. Если это число равно нулю, то спросите пользователя, если они действительно хотят отправить сообщение. Он должен работать как функция Gmail Labs, которая делает то же самое.

Странно, что это работает, но в первый раз, когда я бегу, я получаю паузу, как окно пуска почты, придерживается около 45 секунд. Как только это пройдет это, он очень быстро работает до конца времени, у меня открывается Outlook. Если я закрываю Outlook, то в следующий раз я повторю открою его и отправим сообщение, у меня будет это снова.

Любые идеи, народы?

Вот код для моего надстройки:

namespace OutlookAttacher
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            this.Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        void Application_ItemSend(object Item, ref bool Cancel)
        {
            if (Item is Microsoft.Office.Interop.Outlook.MailItem)
            {
                Microsoft.Office.Interop.Outlook.MailItem currentItem = Item as Microsoft.Office.Interop.Outlook.MailItem;
                Cancel = true;

                if (currentItem.Body.Contains("attach"))
                {
                    if (currentItem.Attachments.Count > 0)
                    {
                        Cancel = false;
                        //MessageBox.Show("This message will be sent now.");
                        currentItem.Send();
                    }
                    else
                    {
                        DialogResult ans = MessageBox.Show("This message has no attachments. Are you sure you want to send it?", "OutlookAttacher", MessageBoxButtons.YesNo);
                        if (ans.Equals(DialogResult.Yes))
                        {
                            Cancel = false;
                            //MessageBox.Show("This message will be sent now.");
                            currentItem.Send();
                        }
                    }
                }
                else
                {
                    Cancel = false;
                    //MessageBox.Show("This message will be sent now.");
                    currentItem.Send();
                }
            }
        }
    }
}

Любые предложения по улучшению кода также приветствуются, поскольку это мой первый удар в надстройке Outlook.

Обновлять: Я бегаю это на 5-летнем ноутбуке Dell, 2 ГБ оперативной памяти и I-No-Note-Note - какой процессор Intel. Мне нравится идея добавления следа / отладки его. Мне придется пойти понять, как выйти через код, чтобы я мог видеть, где он может занимать самое длинное время. Спасибо тебе!

Это было полезно?

Решение

Хорошо, я действительно смущен. Задержка, которую я видел, была просто изолирование Outlook с моим сервером Exchange. Я был дома, когда я тестировал, и Outlook все еще подключался через http. Я вижу это быстро сегодня, в офисе, так что нет http. Спасибо за ответы в любом случае.

:-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top