2015-04-24 3 views
0

Я пытаюсь настроить Outlook через C# код addin. Он работает, но при открытии двух или более писем (через новую почту) возникают некоторые проблемы. Поэтому я хочу избежать одновременного открытия двух или нескольких писем в Outlook. Моя версия Outlook - 2013.Как избежать двух составлять почту за раз в Outlook

В приведенном ниже коде я пытаюсь отправить ссылку вложенного файла во время события click click. Если человек открывает два или более писем в одно и то же время, это рухнет (я написал много кода из этого в моем проекте, чтобы получить ссылку на прикрепленный код и другие). Как я могу избежать двух составления почты или поддерживать разные сеансы для двух составлений почтовых диалогов?

void Application_ItemSend(object Item, ref bool Cancel) 
{ 
    int attachcountbs=0; 
    StringBuilder sendinglink = new StringBuilder(); 
    string[] comingstrbuilder = Convert.ToString(SPForm.urlofattach).Split('\n'); 
    Outlook.Application oApp = new Outlook.Application(); 
    Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);   
    StringBuilder sb = new StringBuilder(); 

    //sb.AppendLine("-------------Internal Use-------------<br/>"); 
    //sb.AppendLine("<a href='" + Class1.test + "'>" + Class1.test + "</a>"); 

    if (Item is Outlook.MailItem) 
    { 
     Outlook.MailItem mail = (Outlook.MailItem)Item; 
     Outlook.NameSpace session = mail.Session; 
     attachcountbs = mail.Attachments.Count; 

     int arraycount = comingstrbuilder.Count(); 
     int checkattach=1; 
     for (int i = 0; i < arraycount; i++) 
     { 
      if (attachcountbs < checkattach) 
      { 
       break; 
      } 
      if (comingstrbuilder[i].Contains(mail.Attachments[checkattach].DisplayName)) 
      { 

      //} 
      //if (comingstrbuilder[i] == mail.Attachments[checkattach].DisplayName) 
      //{ 
       sendinglink.AppendLine(comingstrbuilder[i]); 
       checkattach++; 
      } 
     } 

     if (mail.Attachments.Count == 0) 
     { 
      mail.HTMLBody = ""; 
     } 
     else 
     { 
      mail.HTMLBody += "-------------Internal Use-------------<br/>"; 

      //mail.HTMLBody += "<a href='" + Class1.test + "'>" + Class1.test + "</a>"; 
      //mail.HTMLBody += SPForm.urlofattach.ToString(); 
      mail.HTMLBody += sendinglink.ToString(); 
      SPForm.urlofattach.Clear(); 
     } 
    } 
} 
+2

Пытается остановить пользователя от использования Outlook в том виде, в котором они хотят быть ... * неправильным * ... решением. Я бы предпочел сосредоточиться на том, чтобы сделать ваш код очень выгодным. –

+0

чем у ..... у меня есть другая логика с моим кодом, чтобы обрабатывать больше новых почтовых окон ........ – RSB

ответ

0

я заметил следующий код:

Outlook.Application oApp = new Outlook.Application(); 

Там нет необходимости создавать новый экземпляр приложения Перспективы в обработчик событий ItemSend. Вместо этого вам нужно использовать свойство Application класса add-in.

Метод отображения принимает логический параметр, который позволяет отображать модальное окно. В этом случае пользователь должен закрыть такие окна перед открытием других окон инспектора. Просто верните метод.

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

Смежные вопросы