2016-03-30 168 views
0

Ich habe ein Problem mit dem Speichern MailItem in Outlook Addin, nachdem ich einige Eigenschaften zu ändern oder ergänzen. Code löst Fehler aus: "Die Operation kann nicht ausgeführt werden, da die Nachricht geändert wurde". Die Idee des Add-Ins ist: Klicken Sie mit der rechten Maustaste auf Mail, klicken Sie auf die neue Option "An System senden", dann wird die E-Mail gesendet und das Symbol wird als eine Markierung erhalten, dass es erfolgreich gesendet wurde. Hier ist mein Code:MailItem.Save() Fehler „Der Vorgang kann nicht ausgeführt werden, da die Nachricht geändert wurde“

mail.UserProperties.Add("exportedToCompany", OlUserPropertyType.olText, true, OlFormatText.olFormatTextText); 
mail.UserProperties["exportedToCompany"].Value = "exported"; 

try 
{ 
    try 
    { 
     mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8582000B", false); 
     mail.MessageClass = "IPM.Note.ExportedMail"; 
     mail.Save(); //throws error 
    } 
    catch (System.Exception ex) { logger.Error(ex.Message); logger.Error(ex.StackTrace); } 
    DeleteUselessMsg(mail); 
} 
catch (System.Exception ex) 
{ 
    Debug.WriteLine(ex.StackTrace); 
    logger.Error(ex.Message); 
    logger.Error(ex.StackTrace); 
} 

SendMail(GetNextMail()); 

Während debug, kann ich nicht wirklich Situation simulieren, wenn es passiert, ich habe gerade Datei vom Client anmelden, wo dieser Fehler viel passiert. Ich wundere mich, warum ist so zufällig, dass ich diesen Fehler überhaupt nicht bekomme und Client bekommen es viel, aber nicht jedes Mal. Eine meiner Ideen war, dass IMAP irgendwie Mails aktualisiert, bevor ich sie speichere - ist das überhaupt möglich? Andere Sache nach dem Code mit Fehler ausgeführt: Outlook fragt nach dem Versuch, nicht gespeicherte Elemente zu speichern, Programm zu schließen, und vermutlich Programm erstellt Kopien von E-Mails im Entwurf-Ordner (aber ich bin mir nicht sicher, ob es mit meinem Problem verbunden ist). Kann ich das MailItem irgendwie erzwingen? mit Outlook 2013

Antwort

0

Der Fehler bedeutet, dass die Nachricht, die Sie es geändert wurde zwischen dem Zeitpunkt geöffnet und die Zeit, um Ihre genannt Speichern. Stellen Sie als allgemeine Faustregel sicher, dass Sie Verweise auf Live-Outlook-Elemente so kurz wie möglich behalten.

Woher kommt die Mailvariable? Versuchen Sie, die Eintrags-ID des Elements anstelle des Live-MailItem-Objekts zu speichern: Öffnen Sie das Element mit seiner Eintrags-ID, indem Sie verwenden, ändern und speichern Sie es, geben Sie das Element frei.

+0

Mail-Variable stammt aus Explorer.Selection od-Typ MailItem – user3762819

+0

Wie Sie sagten, Problem auftritt, wenn Nachricht zwischen Öffnen und Speichern Aktion geändert wird, aber ich jedes Mal ändern, wenn ich z. B. UserProperties hinzufügen, sollte es nicht jeden Fehler löst Zeit dann? – user3762819

+0

Nein, der zugrunde liegende MAPI-Anbieter sieht nur einen Konflikt, wenn die Nachricht gespeichert wird. Es ist völlig in Ordnung, eine Nachricht zu ändern, aber niemals zu speichern. –