Wann ist ein MailItem kein MailItem? [geschlossen]

7

Ich habe eine Message-Handler-Funktion in Outlook Visual Basic geschrieben (wir verwenden Outlook 2003 und Exchange Server), um eingehende E-Mails zu sortieren.

Es funktioniert für mich, außer manchmal schlägt die Regel fehl und Outlook deaktiviert es.

Dann schalte ich die Regel wieder ein und führe sie manuell in meinem Posteingang aus, um aufzuholen. Die Regel fällt spontan aus und wird mehrmals am Tag deaktiviert.

Ich würde das gerne ein für allemal beheben.

    
0m3r 17.09.2008, 01:26
quelle

7 Antworten

9

Dieser Code zeigte mir die verschiedenen TypeNames, die in meinem Posteingang waren:

%Vor%

HTH

    
Killian Tyler 29.12.2011 19:03
quelle
3

Ich verwende das folgende VBA-Codefragment in anderen Office-Anwendungen, auf die direkt auf die Outlook-Bibliothek verwiesen wird.

%Vor%

usw.

    
Bruce E. Leandro 29.08.2012 18:10
quelle
2

Mein Speicher ist etwas bewölkt, aber ich glaube, dass ein MailItem kein MailItem ist, wenn es sich um eine Lesebestätigung handelt. (Leider wurde der VBA-Code, der dies demonstrierte, an einem anderen Job geschrieben und ist jetzt nicht verfügbar.)

Ich hatte auch Code geschrieben, um eingehende Nachrichten zu verarbeiten, wahrscheinlich aus dem gleichen Grund wie Sie es getan haben (zu viele Regeln für Exchange oder Regeln, die zu komplex für den Regel-Assistenten sind) und scheinen sich daran zu erinnern, dass Sie das gleiche Problem haben einige Dinge schienen von einem anderen Typ zu sein, obwohl ich sie mit etwas wie dem, was du geschrieben hast, gefangen habe.

Ich werde sehen, ob ich ein bestimmtes Beispiel erstellen kann, wenn es helfen wird.

    
Dave DuPlantis 29.09.2008 20:53
quelle
1

hat in Visual Basic von Outlook eine Message-Handler-Funktion geschrieben (wir verwenden Outlook 2003 und Exchange Server), um eingehende E-Mails zu sortieren. Es funktioniert für mich, außer manchmal schlägt die Regel fehl und Outlook deaktiviert es. Dann wende ich die Regel wieder an und führe sie manuell in meinem Posteingang aus, um aufzuholen. Die Regel fällt spontan aus und wird mehrmals am Tag deaktiviert. Ich würde das gerne ein für allemal beheben.

Hier ist der Code, der von der Funktionalität befreit ist, aber Ihnen eine Vorstellung davon gibt, wie er aussieht:

%Vor%

Ein Fehler, den ich bekomme, ist "Type Mismatch", der MyMessageHandler aufruft, wo VB beschwert, dass Item kein MailItem ist. Okay, aber TypeName (Item) gibt "MailItem" zurück. Wie kommt es, dass Item kein MailItem ist?

Eine andere, die ich bekomme, ist, wo eine E-Mail mit einem leeren Betreff kommt. Die Zeile

%Vor%

gibt mir einen Fehler. Ich weiß, Item.Subject sollte leer sein, aber warum ist das ein Fehler?

Danke.

    
17.09.2008 01:39
quelle
1

Es gibt viele Arten von Elementen, die im Standard-Posteingang angezeigt werden können.

Weisen Sie in der aufgerufenen Prozedur das eingehende Element einer Variablen vom Typ Object zu. Verwenden Sie dann TypeOf oder TypeName , um festzustellen, ob es sich um MailItem handelt. Nur dann sollte Ihr Code Aktionen ausführen, die für E-Mails gelten.

d. h.

%Vor%     
JimmyPena 21.06.2012 19:52
quelle
1
%Vor%     
Radek 24.07.2012 15:36
quelle
0

Warum nicht einen einfachen Fehlerhandler für den Code verwenden? Ernst. Sie könnten einen Fehler für jedes Lesen einer Eigenschaft oder eines Objekts schreiben, das fehlschlägt. Dann lass es weitergehen, egal was passiert. Keine Notwendigkeit für eine komplexe Fehlerbehandlung. Stellen Sie sich einen Test vor, der ein leeres Thema zeigt. Da Sie nicht wissen, welchen Wert es zurückgibt, falls es einen gibt und es bei einem leeren oder leeren Betreff fehlerhaft zu sein scheint, müssen Sie es als einen einfachen Test mit einem möglichen Fehler darstellen. Führen Sie den Test als eine if-Anweisung aus (eine, in der Sie trotzdem einen Fehler erhalten), und lassen Sie das Programm bei einem Fehler fortsetzen.

%Vor%     
htd 27.04.2013 09:34
quelle