Outlook​ Mail Absender, Empfänger und Betreff auslesen

  • 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:


    Gruß Ingo

  • Hallo Donsen64!

    Hier ein Codeausschnitt!

    AutoIt
    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)
    Spoiler anzeigen

    If not :?: then ?( else :thumbup:

    2 Mal editiert, zuletzt von Concara (23. Juni 2015 um 09:23)

  • 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.

  • @water

    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:

    AutoIt
    #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)

    AutoIt
    #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)

    If not :?: then ?( else :thumbup:

  • AutoIt
    For $oRecipient in $aResult[n][m]
        MsgBox(0, "", $oRecipient.AddressEntry.Address
    Next

    Soltle Dir für jeden Empfänger einer Mail die Mailadresse ausgeben. n gibt dabei die Nummer der Mail aus dem Array von _OL_ItemFind an und m die Spalte in der Tabelle für das Recipients Attribut.

  • @water

    _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)

    If not :?: then ?( else :thumbup:

  • 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.

    AutoIt
    $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:

    AutoIt
    $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)


    Code
    /O=XXXXXXX/OU=ERSTE ADMINISTRATIVE GRUPPE/CN=RECIPIENTS CN=Vorname.Nachname

    Danke schonmal!

  • nun wird SenderEMailAdress aber nicht als mail angezeit, da es vom Exchange kommt...wie kann man das am besten um wandeln?

    Code
    /O=XXXXXXX/OU=ERSTE ADMINISTRATIVE GRUPPE/CN=RECIPIENTS CN=Vorname.Nachname

    Du willst nur den Anzeigenamen (Vorname Nachname) ohne Punkt?

  • SenderEmailType steht auf "EX" wenn die Mail vom Exchange Server kommt.

  • Code
    $oExchangeUser = $oSender.GetExchangeUser()
    $oExchangeUser.PrimarySmtpAddress

    sollte dann die gewünschte Adresse ergeben. $oSender steht für die von Property aus der $aItems Tabelle für "Sender".

  • 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?