Sollte alles möglich sein.
OutlookEX UDF - 2019-11-30: Neue Version 1.4.0.0. freigegeben
-
- [ offen ]
-
water -
17. Februar 2011 um 12:43 -
Geschlossen -
Erledigt
-
-
Version 0.9.0.0 ist freigegeben.
Bitte ausgiebig testen vor Übernahme in die Produktion!
Für download siehe bitte den Link in meiner Signatur.
-
Zitat von wolkenloser
Hi,
ich versuche mich gerade an _OL_ItemFind.
Ich will in meine Postfach nach Mails suchen die im Betreff "Fehlermeldung" stehen haben.Ich mach das derzeit mit "[Subject]'Fehlermeldung'".
Das kalppt aber nur wenn der Betreff GENAU nur "Fehlermeldung" heißt.
Ich will aber auch welche finden wo z.B "Fehlermeldung123" oder Fehlermeldung geschlossen" drin steht.Mit "[Subject]'Fehlermeldung*'" geht das nicht.
Gibts da noch einen anderen Parameter den ich nutzen kann.
Die Doku ist zwar sehr ausführlich (auch die von MS) aber für mich zu hoch.Gruß
Wolke
[autoit]
Mit _OL_ItemFind geht das leider nicht. Dazu musst Du _OL_ItemSearch bemühren.
So sollte es funzen:#include <OutlookEx.au3>
[/autoit][autoit][/autoit][autoit]$oOutlook = _OL_Open()
[/autoit][autoit][/autoit][autoit]
$aFolder = _OL_FolderAccess($oOutlook, "*\Posteingang")Global $sSearchString = "Fehlermeldung"
[/autoit]
Global $aSearchArray[2][4] = [[1, 4],[0x0037001E, 3, $sSearchString, ""]]
Global $aResult = _OL_ItemSearch($oOutlook, "*\Posteingang", $aSearchArray, "subject,CreationTime,To")
_ArrayDisplay($aResult)
_OL_Close($oOutlook) -
Hallo water,
eine Frage - wie kann ich einfach nur die Anzahl der eMails aus dem Posteingang auslesen?
Ich möchte nichts anderes ausser, dass in einem Label wiedergegeben wird
Mails: 9 (als Beispiel)
Vielen Dank
-
[autoit]
Global $iItems = _OL_ItemFind($oOutlook, "*\Posteingang", $olMail, "", "", "", "", "", 4)
[/autoit]vollbringt dieses Wunder
-
Grossartig.... funktioniert perfekt, danke
//Edit
Funktioniert doch nicht
Hab zum testen einfach kurz folgendes Script erstellt:
[autoit]#Include <OutlookEX.au3>
[/autoit][autoit][/autoit][autoit]Global $oOutlook = _OL_Open()
[/autoit][autoit][/autoit][autoit]
Global $iItems = _OL_ItemFind($oOutlook, "*\Inbox", $olMail, "", "", "", "", "", 4)MsgBox(0,"Posteingang", "Im Posteingang sind " & $iItems & " eMails.")
[/autoit]
_OL_Close($oOutlook)MessageBox wirft "0" aus obwohl in der Inbox eine Mail da ist. Demnach müsste ja "1" ausgegeben werden. Die Console bringt aber auch keinen zusätzlichen Fehler. Woran liegts?
//Edit2
Ok hab folgendes herausgefunden:
Er durchsucht den lokalen Posteingang. Ich will aber nicht diesen, sondern den Eingang von einen der Konten die ich angelegt habe.
Ich hab quasi folgende Struktur:Personal Folders
- Inbox
- Outbox
- Drafts
- etcAccount #1
- Inbox
- Outbox
- Drafts
- etcAccount #2
- Inbox
- Outbox
- Drafts
- etcNun benötige ich aber nicht den lokalen Inbox (denn diese ist immer leer) sondern die Inbox von einen der angelegten Accounts.
-
Dein Posteingang heisst doch "*\Posteingang" und nicht "*\Inbox" oder bist Du auf einem engl. System?
-
Jap englisches System.
Mit Posteingang gabs erst einen Consolenfehler, bis ich geschnallt habe das es am Namen Inbox lag. Nun funktioniert der Abruf - nur leider im falschen Inbox...
-
Also ... dann machen wir das ganz anders.
Rufe die Funktion _OL_FolderAccess auf und gib die gewünschte Folderstruktur an. Die Funktion gibt einen Array zurück dessen erstes Element Du als Parameter 2 an _OL_ItemFind übergibst. Parameter 3 kannst Du dann auf das Keyword "Default" setzen. -
Versteh ich nicht
Wie soll ich _OL_FolderAccess verwenden. Laut der beiliegenden Hilfe-HTML muss ich auch dort den Pfad mit ggf. Subfoldern angeben. Aber der Inboxordner ist kein Subfolder von dem Ort wo er sucht, demnach kann ich ihn dort auch nicht angeben.
Ich weiss nicht wie ich es besser erklären soll, daher hier mal die Ordnerstruktur als Bildanhang...
Die rot markierte Inbox durchsucht er, aber nicht die grün markierte...
//EDIT
Ok hat sich erledigt
[autoit]#Include <OutlookEX.au3>
[/autoit][autoit][/autoit][autoit]Global $oOutlook = _OL_Open()
[/autoit][autoit][/autoit][autoit]
Global $iItems = _OL_ItemFind($oOutlook, "CT-DE\Inbox", $olMail, "", "", "", "", "", 4)MsgBox(0,"Posteingang", "Im Posteingang sind " & $iItems & " eMails.")
[/autoit][autoit][/autoit][autoit]_OL_Close($oOutlook)
[/autoit]Brachte den gewünschten Erfolg...
-
_OL_FolderAccess ist dann hilfreich, wenn Du z.B. sprachunabhängige Skripte schreiben musst. Dann gibst Du nicht "*\Inbox" an sondern kannst den Default FolderTyp direkt angeben.
-
Alles klar, danke dennoch für die schnelle Unterstützung. Jetzt geht's ja so wie es soll
-
Super. Dann lassen wir es so und ändern nix mehr
-
Hallo,
nach über eine Stunde lesen krieg ich folgendes NICHT hin??? (Kaffee hab ich eigentlich genug auf...)
Neue Oulook Objekt erstellen -> Mail -> Option "DISPLAY" um ggf zu korrigieren (und das ganze mit Anhang...)
Code
Alles anzeigen#include <OutlookEX.au3> Global $oOutlook = _OL_Open() ;=========== ; Plain Text ;=========== $Attach = @ScriptDir & "\leer.pdf" $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", "Subject=Subject for BodyFormat=Plain Text", "") $oItem.Attachments.Add = $Attach ;<---------------------------------------------------- [b]Ein kläglicher Versuch [/b] $oItem.BodyFormat = $olFormatHTML $oItem.GetInspector $sBody = $oItem.Body $oItem.Body = "Bla Bla" & $sBody $oItem.Display
Wie heit die Variable für TO/CC/BCC ???
Wie heißt der Parameter für Attachments.Add ??
Was habe ich übersehen??Gruß
Ralf -
Für Attachment Add würde ich Funtion _OL_ItemAttachmentAdd vorschlagen.
Für TO CC BCC schlage ich Funktion _OL_ItemRecipientAdd vor.
Denn dafür gibt es das UDF ja -
Wissen ist macht, nichts wissen macht auch nix... Ich habe die vorab nicht gefunden
-
ich versuche leider ohne Erfolg das Datum der ältesten E-Mail in einem Ordern auszugeben. Dabei muss ich aber darauf achten, dass diese E-Mail nicht markiert oder als erledigt abgehackt wurde.
-
Wenn Du _OL_ItemFind verwendest, dann könntest Du nach dem Datum sortieren, so dass der älteste Eintrag zu Beginn des Ergebnissarrays steht.
-
@rynow, das ist in der Tat sehr nerven aufreibend bis man sich den richtigen code zusammengeschustert hat, zumal es dafür so gut wie keine Beispiele gibt.
wink an waterdu mußt unteranderem das FlagIcon abfragen.
such mal hier im Forum nach Beiträgen von mirhier mal ein codeschnipsel, sollte lauffähig sein, aber ohne gui, nur consolenausgabe. (ungetestet)
[autoit]
bitte entsprechend mal ein paar emails orange markieren
[/autoit][autoit][/autoit][autoit]
#include <OutlookEX.au3>Global Const $olBlueFlagIcon = 5
[/autoit][autoit][/autoit][autoit]
Global Const $olGreenFlagIcon = 3
Global Const $olNoFlagIcon = 0
Global Const $olOrangeFlagIcon = 2
Global Const $olPurpleFlagIcon = 1
Global Const $olRedFlagIcon = 6
Global Const $olYellowFlagIcon = 4
Global Const $olNoFlag = 0
Global Const $olFlagComplete = 1
Global Const $olFlagMarked = 2Global $oOutlook = _OL_Open(True, @ScriptDir & "\_OL_Warnings.exe", 1000, 1000, "", "")
[/autoit][autoit][/autoit][autoit]
Global $aFolder = "Postfach - Anfragen\Posteingang" ; Postfach Anfragen und der Unterordner Eingang Posteingang , entsprechend anpassenmailtest()
[/autoit][autoit][/autoit][autoit]Func mailtest()
[/autoit]
$orange_count = ""
$aItems_orange = _OL_ItemFind($oOutlook, $aFolder, $olMail, "", "", "", "EntryID,FlagIcon")
_ArrayDisplay($aItems_orange, "Array aller orangen Mails")
For $i = 1 to $aItems_orange[0][0]
If $aItems_orange[$i][1] = 2 Then $orange_count += 1 ;wenn email orange markiert ist zähle Anzahl um 1 hoch
consolewrite($orange_count&@CRLF) ;schreibt dir schrittweise die Anzahl der orange markierten emails in die console
Next
consolewrite($orange_count)
Endfunc -
Vermutlich habe ich was übersehen, aber was haben die Flags mit der ältesten Mail im Postfach zu tun?
Welche Beispile fehlen konkret?
-