Outlook Nachrichten (.MSG) auslesen?

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Confuzi Us.

    Outlook Nachrichten (.MSG) auslesen?

    Hi Leute,

    ist es möglich anhand einer *.MSG-Datei auszulesen von wem die Nachricht kommt?
    Wenn ich die Datei in einem Editor öffne kann ich sehen (siehe Bild) das ich einige Anhaltspunkte habe:

    "From: "
    "To:"
    datum, betreff, anhang,...

    Kennt ihr vielleicht eine Klasse die mir liefert was ich möchte?
    Oder muss ich mir was "basteln"?


    Danke,
    euer verwirrter Confuzi Us. ?(
    Bilder
    • Bildbild.png

      5,26 kB, 272×122, 717 mal angesehen
    Hier mal kleines Beispiel:

    VB.NET-Quellcode

    1. Regex.Replace(Inhalt des headers, pattern, replacement)

    Pattern ist hier erstmal "From: ", dann kommt ein Name (nur Buchstaben und leerzeichen) "[a-zA-Z ]" diese Zeichen müssen jetzt mindestens 3 mal vorkommen, nach oben ist keine Grenze "{3,}". Dann brauchennwir noch die Email, die in folgende Zeichen eingeklemmt ist: "<>". Das mittlere wollen wir herausfiltern: "<(.*?)>" hier filtert uns das (.*?) Eine variable heraus, die wir dann mit $1 abrufen können.
    Dann brauchen wir noch das replacement: hier schreibender einfach "$1" hin. Das Ergebnis ist dann die herausgefilterte Email Adresse.
    Hoffe, das hilft ein wenig beim Verständnis.

    Also ist das pattern "From: [a-zA-Z ]{3,} <(.*?)>", aber Versuch bitte trotzdem, es zu verstehen :).
    Erst einmal danke!

    Ich hätte nie gedacht das es so etwas simples gibt..
    Vom Verständnis her leuchtet es mir ein, nur das anwenden.. Da hakt es jetzt noch-

    VB.NET-Quellcode

    1. Dim sr As System.IO.StreamReader = New System.IO.StreamReader("C:\Temp\MeinTest.txt")
    2. Dim s_RTO As String = sr.ReadToEnd
    3. Dim r As New Regex("From: [a-zA-Z ]{3,} <(.*?)>")
    4. Dim s_wert As String = r.Match(s_RTO).Value
    5. MsgBox(s_wert)


    Nun bekomme ich den kompletten String "From: Heino Pei <h.pei@peino-heino.com>"
    Was ja richtig ist!!
    Aber ich möchte ja "nur" das in den Zeichenrelationen <h.pei@peino-heino.com>

    Gibt's da vielleicht ein Wort das ich nur noch benötige? ?(

    Ich werde natürlich weiterhin versuchen eine eigene Antwort zu finden!
    Für Unterstützung bin ich aber immer Dankbar :whistling:

    Danke

    VB.NET-Quellcode

    1. Dim sr As System.IO.StreamReader = New System.IO.StreamReader("C:\Temp\MeinTest.txt")
    2. Dim s_RTO As String = sr.ReadToEnd
    3. Dim r As New Regex("From: [a-zA-Z ]{3,} <(.*?)>")
    4. Dim result As String = r.Split(":")(1)
    5. Dim s_wert As String = result.Match(s_RTO).Value
    6. MsgBox(s_wert)


    So sollte es eigentlich funktionieren, hoffe ich.
    Bitte keine VB-Fragen üb... Ach scheiß drauf, mich fragt ja eh keiner.
    Ups. Voll vergessen zu antworten!

    Habe mir im nachhinein eine kleine Funktion geschrieben die mir die "Mitte" ausgibt :thumbsup:
    Ich gebe nur noch den ersten String an (indexof) und den letzten string (lastindexof)
    und schon hab ich mein "mittelteil" :)

    Vielen Dank noch.