2017-02-20 8 views
2

Ich schreibe ein Skript in Outlook VBA, um jede E-Mail in einer Access-Datenbank aufzuzeichnen, wie sie in meinem Posteingang kommen. Der Code, den ich habe, löst kein Problem aus. Es greift auf die Access-Datenbank ohne Probleme zu. Es kopiert das Thema ohne Probleme. Dann kommt es zum Körper und kopiert überhaupt nichts. Ich habe Dinge wie .HTMLbody versucht anstatt nur .Body, aber das zeigt wieder einen leeren Körper. Mein Code ist wie folgt:VBA Outlook 2010 empfangen Mail. Körper ist leer

Wenn jemand eine Idee hat, was ich falsch mache, lassen Sie es mich bitte wissen. Drei Stunden Googeln scheint es nicht sortiert zu haben!

+0

Gibt Ihre Nachrichtenbox auch nichts zurück? – Jordan

+0

Ja @ Jordan das Meldungsfeld öffnet sich (also kein Fehler geworfen), aber mit nichts drin. – codeacker

+0

Gehen Sie durch Ihren Code (F8) und sehen Sie nach der Zuweisung "objEmail" in Ihrem lokalen Fenster. Sehen Sie nach, ob es sogar eine "body" -Eigenschaft gibt, wenn Sie die Variable erweitern. Ich frage mich, ob 'GetItemFromID' tatsächlich ein 'MailItem' zurückgibt. –

Antwort

0

Versuchen Sie, zusätzlichen Code (Access) aus dem Ereignishandler NewMailEx zu entfernen. Verwenden Sie diese Methode mit Vorsicht, um die Auswirkung auf die Outlook-Leistung zu minimieren. Abhängig von der Konfiguration auf dem Clientcomputer können jedoch nach dem Eintreffen einer neuen Nachricht im Posteingang Prozesse wie Spamfilter und Clientregeln, die die neue Nachricht aus dem Posteingang in einen anderen Ordner verschieben, asynchron ausgeführt werden. Sie sollten nicht davon ausgehen, dass nach dem Auslösen dieser Ereignisse die Anzahl der Elemente im Posteingang immer um ein Element erhöht wird.

Die Zeichenfolge EntryIDsCollection enthält die diesem Eintrag entsprechende Eintrags-ID. Beachten Sie, dass sich dieses Verhalten gegenüber früheren Versionen des Ereignisses geändert hat, wenn die EntryIDCollection eine Liste mit durch Kommas getrennten Eintrags-IDs aller Elemente enthielt, die seit dem letzten Zeitpunkt des Ereignisses im Posteingang empfangen wurden.

+0

Das ist aufschlussreich dank @eugene Ihre Verbindung zu MSDN erklärt, dass NewMailEx für POP3-Konten nicht IMAP ist. Vielleicht wäre die beste Methode, eine Regel zu erstellen, um ein Skript auszuführen, wenn eine E-Mail empfangen wird? Wie würde ich dann diese E-Mail identifizieren? – codeacker

+0

Eine Instanz des 'MailItem' wird in diesem Fall an den VBA-Makro übergeben. Es ist nicht notwendig, die 'GetItemFromId'-Methode für Regeln zu verwenden. –

+0

Ich habe das versucht, es bekommt wieder das Thema ohne Problem, aber nicht den Körper. Das bedeutet, dass die Nachricht erst heruntergeladen werden kann, wenn sie in der Vorschau angezeigt oder geöffnet wurde. Jetzt werde ich versuchen, es an diesem Punkt auszulösen ... mehr Googeln benötigt :) – codeacker

Verwandte Themen