Hallo,
ich suche eine Möglichkeit wie ich mit dem aktuellen OutlookEX bei eine Mail Absender, Empfänger und Betreff auslesen kann. Irgendwie finde ich nur etwas wie ich eine Mail erstellen kann.
Gruß Ingo
Hallo,
ich suche eine Möglichkeit wie ich mit dem aktuellen OutlookEX bei eine Mail Absender, Empfänger und Betreff auslesen kann. Irgendwie finde ich nur etwas wie ich eine Mail erstellen kann.
Gruß Ingo
Hängt davon ab, wie das Skript herausfinden soll, welche Mail Du meinst:
Die, die gerade angezeigt wird?
Die, die im Posteingang markiert ist?
Die(jenigen), die Du über eine Suche nach Absender, Betreff etc. findest?
Hallo water,
ja da hast du natürlich recht.
Es geht darum in einem Ordner alle Mails zu durchsuchen und den Inhalt auszuwerten. Also sollte der Ausgangspunkt eine Ordner Objekt sein.
Also so in etwa:
#include <OutlookEX.au3>
Global $oOutlook
Global $aFolderInbox
Global $ListOfMail
$oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)
$aFolderInbox = _OL_FolderAccess($oOutlook, "", $olFolderInbox)
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error accessing folder 'Inbox'. @error = " & @error)
$ListOfMail = _OL_ItemFind($oOutlook, $aFolderInbox[1], $olMail, "[UnRead]=True")
_ArrayDisplay($ListOfMail, "$ListOfMail")
;.................
_OL_Close($oOutlook)
Alles anzeigen
Gruß Ingo
Hallo Donsen64!
Hier ein Codeausschnitt!
Global $oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF:", "Error connecting to Outlook. @error = " & @error & ", @extended: " & @extended)
$aItems = _OL_ItemFind($oOutlook, "*\OrdnerImOutlook", $olMail, "", "", "", "Subject,from", "", 1)
_ArrayDisplay($aItems)
; #FUNCTION# ====================================================================================================================
; Name ..........: _OL_ItemFind
; Description ...: Finds items (contacts, appointments ...) returning an array of all specified properties.
; Syntax.........: _OL_ItemFind($oOL, $vFolder[, $iObjectClass = Default[, $sRestrict = ""[, $sSearchName = ""[, $sSearchValue = ""[, $sReturnProperties = ""[, $sSort = ""[, $iFlags = 0[, $sWarningClick = ""]]]]]]]])
; Parameters ....: $oOL - Outlook object returned by a preceding call to _OL_Open()
; $vFolder - Folder object as returned by _OL_FolderAccess or full name of folder where the search will be started.
; +If you want to search a default folder you have to specify the folder object.
; $iObjectClass - Optional: Class of items to search for. Defined by the Outlook OlObjectClass enumeration (default = Default = $olContact)
; $sRestrict - Optional: Filter text to restrict number of items returned (exact match). For details please see Remarks
; $sSearchName - Optional: Name of the property to search for (without brackets)
; $sSearchValue - Optional: String value of the property to search for (partial match)
; $sReturnProperties - Optional: Comma separated list of properties to return (default = depending on $iObjectClass. Please see Remarks)
; $sSort - Optional: Property to sort the result on plus optional flag to sort descending (default = None). E.g. "[Subject], True" sorts the result descending on the subject
; $iFlags - Optional: Flags to set different processing options. Can be a combination of the following:
; | 1: Subfolders will be included
; | 2: Row 1 contains column headings. Therefore the number of rows/columns in the table has to be calculated using UBound
; | 4: Just return the number of records. You don't get an array, just a single integer denoting the total number of records found
; $sWarningClick - Optional: The entire path (drive, directory, file name and extension) to 'OutlookWarning2.exe' or another exe with the same function (default = None)
; Return values .: Success - One based two-dimensional array with the properties specified by $sReturnProperties
; Failure - Returns "" and sets @error:
; |1 - You have to specifiy $sSearchName AND $sSearchValue or none of them
; |2 - $sWarningClick not found
; |3 - Error accessing the specified folder. See @extended for errorcode returned by _OL_FolderAccess
; |4 - Error accessing specified property. For details check @extended
; |1nmm - Error checking the $sReturnProperties as returned by __OL_CheckProperties.
; + n is either 0 (property does not exist) or 1 (Property has invalid case)
; + mm is the index of the property in error (one based)
; Author ........: water
; Modified ......:
; Remarks .......: Be sure to specify the values in $sReturnProperties and $sSearchName in correct case e.g. "FirstName" is valid, "Firstname" is invalid
;+
; $sRestrict: Filter can be a Jet query or a DASL query with the @SQL= prefix. Jet query language syntax:
; Restrict filter: Filter LogicalOperator Filter ...
; LogicalOperator: And, Or, Not. Use ( and ) to change the processing order
; Filter: "[property] operator 'value'" or '[property] operator "value"'
; Operator: <, >, <=, >=, <>, =
; Example: "[Start]='2011-02-21 08:00' And [End]='2011-02-21 10:00' And [Subject]='Test'"
; See: http://msdn.microsoft.com/en-us/library/cc513841.aspx - "Searching Outlook Data"
; http://msdn.microsoft.com/en-us/library/bb220369(v=office.12).aspx - "Items.Restrict Method"
;+
; N.B.: Pass time as HH:MM, HH:MM:SS is invalid and returns no result
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _OL_ItemFind($oOL, $vFolder, $iObjectClass = Default, $sRestrict = "", $sSearchName = "", $sSearchValue = "", $sReturnProperties = "", $sSort = "", $iFlags = 0, $sWarningClick = "")
Local $bChecked = False, $oItems, $aTemp, $iCounter = 0, $oItem
If $sWarningClick <> "" Then
If FileExists($sWarningClick) = 0 Then Return SetError(2, 0, "")
Run($sWarningClick)
EndIf
If $iObjectClass = Default Then $iObjectClass = $olContact ; Set Default ObjectClass
; Set default return properties depending on the class of items
If StringStripWS($sReturnProperties, 3) = "" Then
Switch $iObjectClass
Case $olContact
$sReturnProperties = "FirstName,LastName,Email1Address,Email2Address,MobileTelephoneNumber"
Case $olDistributionList
$sReturnProperties = "Subject,Body,MemberCount"
Case $olNote, $olMail
$sReturnProperties = "Subject,Body,CreationTime,LastModificationTime,Size"
Case Else
EndSwitch
EndIf
Alles anzeigen
Hallo,
ja da sehe ich den Betreff und den Text der Mail aber ich brauche auch den Absender und die Liste der Empfänger. Dazu habe ich irgendwie nichts gefunden. ich würde mal vermuten das ich da nicht über das UDF ran komme sondern nur über die Mailobjekte direkt.
Gruß Ingo
Wenn Du vom Absender nur die Mailadresse bracuhst, dann lass Dir von _OL_ItemFind das Attribut "SenderEmailAddress" zurückgeben.
Das Attribut "Recipients" sollte Dir die Collection der Empfänger zurückgeben die Du dann in einer Schleife abarbeiten musst.
Wie kann man das Recipients Attribut auswerten?
Wenn ich es test dann bekomme ich kein Array zurück.
Alle Attribute die einen String, Boolean, Date, Long zurückgeben werden im Array angezeigt.
Array wird angezeigt:
#include <Array.au3>
#include <outlookEX.au3>
Global $oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF:", "Error connecting to Outlook. @error = " & @error & ", @extended: " & @extended)
$aItems = _OL_ItemFind($oOutlook, "*\Outlookordner", $olMail, "", "", "", "ReceivedByName,SenderEmailAddress,SenderName,To", "", 1)
_ArrayDisplay($aItems)
$aItems2 = _OL_VersionInfo()
_ArrayDisplay($aItems2)
Array wird nicht angezeigt:(Attribut Recipients)
#include <Array.au3>
#include <outlookEX.au3>
Global $oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF:", "Error connecting to Outlook. @error = " & @error & ", @extended: " & @extended)
$aItems = _OL_ItemFind($oOutlook, "*\Outlookordner", $olMail, "", "", "", "Recipients", "", 1)
_ArrayDisplay($aItems)
$aItems2 = _OL_VersionInfo()
_ArrayDisplay($aItems2)
_OL_ItemFind erzeugt aber kein Array wenn man als Attribut Recipients angiebt.
Es wird ein Fehler ausgegeben Error 4 und Extended Error 1
Laut deiner UDF Beschreibung:
4 - Error accessing specified property. For details check @extended
+ n is either 0 (property does not exist) or 1 (Property has invalid case)
#include <Array.au3>
#include <outlookEX.au3>
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") ; Implementiert einen eigenen Error-Handler
Global $oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF:", "Error connecting to Outlook. @error = " & @error & ", @extended: " & @extended)
$aItems = _OL_ItemFind($oOutlook, "*\18.Sicherung", $olMail, "", "", "", "Recipients", "", 1)
If @error Then ConsoleWrite("error: " & @error & @CR & "Extended Error: " & @extended & @CR)
For $element In $aItems
MsgBox(0, "", $element)
Next
_ArrayDisplay($aItems)
Func MyErrFunc()
$HexNumber = Hex($oMyError.number, 8)
MsgBox(0, "", "Ein COM-Fehler wurde abgefangen!" & @CRLF & _
"Fehlernummer: " & $HexNumber & @CRLF & _
"WinDescription: " & $oMyError.windescription)
SetError(1) ; Ein Rückgabewert zum Überprüfen, wen die Funktion zurückgekehrt ist
EndFunc ;==>MyErrFunc
Alles anzeigen
Dann machen wir es andersrum. Lass Dir von _OL_ItemFind die Property EntryID zurückgeben und mit dieser rufst Du dann _OL_ItemRecipientGet auf.
Hallo,
so könnte ich das doch auch abfragen. Da bekomme ich ja fast alle Infos über die Mail.
$ListOfMail = _OL_ItemFind($oOutlook, $aFolderInbox[1], $olMail, "[UnRead]=True", "", "", "Subject,Body,CreationTime,LastModificationTime,Size,Sender,SenderEmailAddress,SenderName,Recipients,EntryID")
_ArrayDisplay($ListOfMail, "$ListOfMail")
ich würde meinen, dass ich jetzt nur noch die Spalte 5 und 8 auseinander nehmen muss.
Gruß Ingo
Viele Wege führen nach Rom.
Welche Informationen willt Du vom Sender und den Empfängern haben: Mail-Adresse, Anzeigename ...? Das hängt von der Art der Adresse ab (Exchange Account, Adressliste etc.)
tolles thema, brauche ich auch gerade (bin noch Outlook UDF anfänger)
Ich möchte alle Mails von einer absenderadresse in einen Unterordner verschieben....
Also zuerst auslesen:
$aItems = _OL_ItemFind($oOutlook, "*\Posteingang\test", $olMail, "", "", "", "SenderEmailAddress,SenderName", "", 1)
nun wird SenderEMailAdress aber nicht als mail angezeit, da es vom Exchange kommt...wie kann man das am besten um wandeln? (nur wenn es vom internen exchange kommt)
Danke schonmal!
Du willst nur den Anzeigenamen (Vorname Nachname) ohne Punkt?
da ich nach E-Mail Adresse meine Entscheidung treffen möchte, benötige ich die "normale" E-Mail Adresse
SenderEmailType steht auf "EX" wenn die Mail vom Exchange Server kommt.
Hi Water,
großartige UDFs - Vielen Dank!
Ich habe eigentlich genau das gleiche Problem wie GerhardSchr, allerdings ist bei mir das "Sender" Feld bei allen Mails leer.
Wie kann ich dann für Mails mit SenderEmailType = EX die "normale" E-Mail Adresse herausfinden?
Oder habe ich deinen letzten Post falsch verstanden? Könntest Du ihn dann noch etwas ausführlicher erklären?
Vielen Dank schon im Voraus.
TomClancy
Kannst Du bitte Dein Skript posten mit dem Du die Daten ausliest?