Auf der Suche nach geeignetem Code für den POP3 Email Empfang bin ich über ein OpenSource Projekt gestolpert, es nennt sich OpenPOP3.
Natürlich ist das Protokoll für POP3 nicht sonderlich kompliziert, jedoch das E-Mail Parsing schon.
Leider gibt es z.Z. noch keine geeignete Dokumentation zu diesem Projekt, aber durch ein wenig rumprobieren habe ich es nun hinbekommen, Mails zu holen und Attachments mit zu sichern.
Download der Binaries:
sourceforge.net/projects/openpop3/files/
Download vom VB-Paradise Server (*hinzugefügt am 22.07.2009*)
Benötigt wird:
- Form1
- Button1
- TextBox1
- ListBox1
- ListBox2
Verweise:
OpenPOP.dll
MIMEParser.dll
Imports:
System.IO
OpenPOP
OpenPOP.Pop3
Globale Variablen:
Code für Button1:
Code für ListBox1:
Code für ListBox2:
Informationen Header der Mail:
Hier ist eine Liste der Informationen, die man aus dem Mail Header auslesen kann. Die Variable m steht hier für die Message (siehe Code Button1):
Ich hoffe es hilft einigen weiter, mir hat es sehr geholfen. Die Libraries verfügen auch noch über diverser anderer nützlicher Funktionen, aber dieses hier ist denke ich mal der Hauptteil.
Edit by LaMa5:
- Download vom VB-Paradise Server hinzugefügt
Natürlich ist das Protokoll für POP3 nicht sonderlich kompliziert, jedoch das E-Mail Parsing schon.
Leider gibt es z.Z. noch keine geeignete Dokumentation zu diesem Projekt, aber durch ein wenig rumprobieren habe ich es nun hinbekommen, Mails zu holen und Attachments mit zu sichern.
Download der Binaries:
sourceforge.net/projects/openpop3/files/
Download vom VB-Paradise Server (*hinzugefügt am 22.07.2009*)
Benötigt wird:
- Form1
- Button1
- TextBox1
- ListBox1
- ListBox2
Verweise:
OpenPOP.dll
MIMEParser.dll
Imports:
System.IO
OpenPOP
OpenPOP.Pop3
Globale Variablen:
Code für Button1:
VB.NET-Quellcode
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim pop3 As New POPClient
- pop3.Disconnect()
- pop3.Connect("pop.host.de", 110)
- pop3.Authenticate("benutzeraccount", "benutzerpasswort")
- ListBox1.Items.Clear()
- For i As Integer = 1 To pop3.GetMessageCount
- Dim m As MIMEParser.Message = pop3.GetMessage(i, False)
- ListBox1.Items.Add("From: " & m.From & " <" & m.FromEmail & "> - " & m.Subject)
- If m.MessageBody.Count > 0 Then
- Dim Attach As New List(Of MIMEParser.Attachment)
- Messages.Add(m.MessageBody(m.MessageBody.Count - 1))
- For ii As Integer = 1 To m.AttachmentCount - 1
- Attach.Add(m.GetAttachment(ii))
- Next
- AttachArray.Add(Attach)
- End If
- ' pop3.DeleteMessage(i) ' Wenn die Message nach abholung gelöscht werden soll
- Next
- pop3.Disconnect()
- End Sub
Code für ListBox1:
VB.NET-Quellcode
- Private Sub ListBox1_SelectedIndexChanged(ByVal sender As ListBox, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
- TextBox1.Text = Messages(sender.SelectedIndex)
- ListBox2.Items.Clear()
- For Each att As MIMEParser.Attachment In AttachArray(sender.SelectedIndex)
- ListBox2.Items.Add(att.ContentFileName & " " & att.ContentLength & " Byte")
- Next
- End Sub
Code für ListBox2:
VB.NET-Quellcode
- Private Sub ListBox2_SelectedIndexChanged(ByVal sender As ListBox, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
- Dim att As MIMEParser.Attachment = AttachArray(ListBox1.SelectedIndex)(sender.SelectedIndex)
- Dim fs As FileStream = File.Create(Application.StartupPath & "/attach/" & att.ContentFileName)
- Dim da() As Byte
- da = att.DecodedAttachment
- fs.Write(da, 0, da.Length)
- MsgBox("'" & att.ContentFileName & "' wurde gespeichert!")
- fs.Close()
- End Sub
Informationen Header der Mail:
Hier ist eine Liste der Informationen, die man aus dem Mail Header auslesen kann. Die Variable m steht hier für die Message (siehe Code Button1):
Quellcode
- String m.AttachmentBoundry
- String m.AttachmentBoundry2
- Integer m.AttachmentCount
- Array(Of String) m.BCC
- Array(Of String) m.CC
- Array(Of String m.TO
- String m.ContentEncoding
- String m.ContentType
- String m.From
- String m.FromEmail
- Boolean m.HasAttachment
- String m.MessageID
- String m.Subject
- String m.Date
- String m.Received
- Boolean m.HTML
- String m.Importance
- String m.ReplyTo
- String m.ReplyToEmail
- Function(att As MIME.Parser.Attachment, Filename) m.SaveAttachment
- Function(Path) m.SacheAttachments
Ich hoffe es hilft einigen weiter, mir hat es sehr geholfen. Die Libraries verfügen auch noch über diverser anderer nützlicher Funktionen, aber dieses hier ist denke ich mal der Hauptteil.
Edit by LaMa5:
- Download vom VB-Paradise Server hinzugefügt
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Marcus Gräfe“ ()