Grüss Gott Gemeinde
Hab heute was feines für euch. Und zwar: Was sind .msg Dateien und wie kann ich die Dinger auslesen?
Was sind den nun diese Dateien. Naja im Grunde sind das Mails, die von Outlook generiert werden.
Der Aufbau ist relativ simpel, es ist eine Containerdatei, die den ganzen Inhalt des Mails beinhaltet. Soweit so nice.
Doch wie kann man die Dinger auslesen? Relativ simpel -> Editor öffnen, drag and drop, fertig! Naja, das ist mal die halbe Miete.
Theoretisch wird alles nötige angezeigt. Aber leider nicht so, dass man zum Beispiel gezielt Inhalte auslesen könnte.
Doch hierbei kommt uns die Edanmo Klasse zur Hilfe. (mvps.org/emorcillo/en/code/grl/storage.shtml)
Diese Klasse dient einfach nur dazu, Container Dateien zu öffnen und die eingebetteten Dateien zu lesen und als Stream auszugeben.
Wer noch nie gesehen hat, wie eine Containerdatei von innen aussieht, kann zum Beispiel 7Zip benutzen um sie zu öffnen. (siehe Anhang 7zip...) (übrigens lassen sich so auch EXE usw. öffnen)
Wer die Edanmo Klasse schon mal benutzt hat, der hat gemerkt, dass vom gewünschten Inhalt immer nur der Anfangsbuchstabe angezeigt wird. Doch ich habe eine Möglichkeit gefunden alles auszugeben.
Und zwar muss man den Stream in einer For Schleife auslesen und immer wieder zusammenfügen . Relativ simpel, wenn man das weiss (hab übrigens nirgends eine Lösung gefunden, musste selber ausprobieren)
Schritt für Schritt Anleitung:
1. Die Controls die es benötigt auf Form einfügen (label, textboxen, usw.)
2. in pathx der Dateipfad der *.msg Datei definieren
3. Routine (siehe unten Code starten)
4. Fertig!
Im Anhang könnt ihr noch meine Software sehen, die ich gemacht habe.
Falls ihr euch fragt, wieso ich das UI so gemacht habe (siehe Anhang). Hab vor kurzem das Game Prey gezockt, und hab da das Terminal gesehen. Das UI des Terminal hat mir so gut gefallen, dass ich es so gemacht habe wie im Game google.ch/search?q=prey+game&s…nal&imgrc=0HiUuGk0ZQtJ_M:
Hier noch der Code der Routine:
Spoiler anzeigen
Ich kann nicht garantieren, dass der Code zu 100% funktioniert. Aber trotzdem hoffe ich, dass euch das kleine Tutorial gefällt.
Falls ihr noch Fragen habt, kein Ding, ich beantworte gerne all eure Fragen zu der Routine oder Software von mir.
Enjoy!
Passt besser in das Unterforum "Internet/LAN - Alles zu Chats, E-Mail, Internet, LAN etc." ~fufu
Hab heute was feines für euch. Und zwar: Was sind .msg Dateien und wie kann ich die Dinger auslesen?
Was sind den nun diese Dateien. Naja im Grunde sind das Mails, die von Outlook generiert werden.
Der Aufbau ist relativ simpel, es ist eine Containerdatei, die den ganzen Inhalt des Mails beinhaltet. Soweit so nice.
Doch wie kann man die Dinger auslesen? Relativ simpel -> Editor öffnen, drag and drop, fertig! Naja, das ist mal die halbe Miete.
Theoretisch wird alles nötige angezeigt. Aber leider nicht so, dass man zum Beispiel gezielt Inhalte auslesen könnte.
Doch hierbei kommt uns die Edanmo Klasse zur Hilfe. (mvps.org/emorcillo/en/code/grl/storage.shtml)
Diese Klasse dient einfach nur dazu, Container Dateien zu öffnen und die eingebetteten Dateien zu lesen und als Stream auszugeben.
Wer noch nie gesehen hat, wie eine Containerdatei von innen aussieht, kann zum Beispiel 7Zip benutzen um sie zu öffnen. (siehe Anhang 7zip...) (übrigens lassen sich so auch EXE usw. öffnen)
Wer die Edanmo Klasse schon mal benutzt hat, der hat gemerkt, dass vom gewünschten Inhalt immer nur der Anfangsbuchstabe angezeigt wird. Doch ich habe eine Möglichkeit gefunden alles auszugeben.
Und zwar muss man den Stream in einer For Schleife auslesen und immer wieder zusammenfügen . Relativ simpel, wenn man das weiss (hab übrigens nirgends eine Lösung gefunden, musste selber ausprobieren)
Schritt für Schritt Anleitung:
1. Die Controls die es benötigt auf Form einfügen (label, textboxen, usw.)
2. in pathx der Dateipfad der *.msg Datei definieren
3. Routine (siehe unten Code starten)
4. Fertig!
Im Anhang könnt ihr noch meine Software sehen, die ich gemacht habe.
Falls ihr euch fragt, wieso ich das UI so gemacht habe (siehe Anhang). Hab vor kurzem das Game Prey gezockt, und hab da das Terminal gesehen. Das UI des Terminal hat mir so gut gefallen, dass ich es so gemacht habe wie im Game google.ch/search?q=prey+game&s…nal&imgrc=0HiUuGk0ZQtJ_M:
Hier noch der Code der Routine:
VB.NET-Quellcode
- ' VERWEIS Hinzufügen: Edanmo.OleStorage.dll
- ' Imports Edanmo.OleStorage
- ' Imports Edanmo
- ' habe pathx im drag&drop event definiert
- Dim msg As New Storage(pathx)
- ' Mailinhalt
- Dim stream As OleStorage.Stream = msg.OpenStream("__substg1.0_1000001F")
- Dim reader As New IO.StreamReader(stream, System.Text.Encoding.Default)
- For Each line As String In reader.ReadToEnd
- TransparentTextBox1.Text += line
- Next line
- TransparentTextBox1.Text = TransparentTextBox1.Text.Trim
- reader.Close()
- stream.Close()
- 'wer kriegt es
- Dim stream2 As OleStorage.Stream = msg.OpenStream("__substg1.0_0E04001F")
- Dim reader2 As New IO.StreamReader(stream2, System.Text.Encoding.Default)
- For Each linex As String In reader2.ReadLine
- TextBox1.Text += linex
- Next
- Label4.Text = "An: " & TextBox1.Text
- TextBox1.Clear()
- reader2.Close()
- stream2.Close()
- 'Betreffzeile
- Dim stream3 As OleStorage.Stream = msg.OpenStream("__substg1.0_0037001F")
- Dim reader3 As New IO.StreamReader(stream3, System.Text.Encoding.Default)
- For Each linex As String In reader3.ReadLine
- TextBox1.Text += linex
- Next
- header_label.Text = TextBox1.Text
- TextBox1.Clear()
- reader3.Close()
- stream3.Close()
- 'wer hat es gesendet
- Dim stream4 As OleStorage.Stream = msg.OpenStream("__substg1.0_5D02001F")
- Dim reader4 As New IO.StreamReader(stream4, System.Text.Encoding.Default)
- For Each linex As String In reader4.ReadLine
- TextBox1.Text += linex
- Next
- Label2.Text = "Von: " & TextBox1.Text
- TextBox1.Clear()
- reader4.Close()
- stream4.Close()
- 'CC Personen
- Dim stream5 As OleStorage.Stream = msg.OpenStream("__substg1.0_0E03001F")
- Dim reader5 As New IO.StreamReader(stream5, System.Text.Encoding.Default)
- Try
- For Each linex As String In reader5.ReadLine
- TextBox1.Text += linex
- Next
- Label5.Text = "Cc: " & TextBox1.Text
- Catch ex As Exception
- Label5.Text = "Cc: -"
- End Try
- TextBox1.Clear()
- reader5.Close()
- stream5.Close()
- msg.Close()
Ich kann nicht garantieren, dass der Code zu 100% funktioniert. Aber trotzdem hoffe ich, dass euch das kleine Tutorial gefällt.
Falls ihr noch Fragen habt, kein Ding, ich beantworte gerne all eure Fragen zu der Routine oder Software von mir.
Enjoy!
Passt besser in das Unterforum "Internet/LAN - Alles zu Chats, E-Mail, Internet, LAN etc." ~fufu
"Die menschliche Vorstellungskraft ist unendlich"
->Versuch dir mal 'ne neue Farbe auszudenken!
Mit Schleifen kann man alles lösen!
Dim d as Double = 1
Do until d = 0
d = (d / 2)
Loop ∞
->Versuch dir mal 'ne neue Farbe auszudenken!
Mit Schleifen kann man alles lösen!
Dim d as Double = 1
Do until d = 0
d = (d / 2)
Loop ∞
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fufu“ ()