Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.IO
- Imports System.Text
- Imports KellermanSoftware.NetEmailValidation
- Module Module1
- Private emailValidator As EmailValidation
- Private options As List(Of ValidationOptions)
- Sub Main()
- emailValidator = New EmailValidation("www.getmywarez.com", "4+N0/zARvT8UeuWLIQh0ItqUdcjkmDxuVbFQ2TekXc4=")
- options = emailValidator.BestConnectionOptions()
- emailValidator.DisableLogging()
- ValidateEmails()
- End Sub
- Sub ValidateEmails()
- Dim dirPath As String = "C:\Users\Administrador\Desktop\Mail Lists"
- Dim curLines As Integer
- Dim curValidMails As Integer
- Dim curValidMails2 As Integer
- Dim totalLines As Integer
- Dim emailAddresses As New Dictionary(Of String, String)(StringComparer.Ordinal)
- Dim lineSet As New HashSet(Of String)(StringComparer.Ordinal)
- Dim enc As Encoding = Encoding.Default
- Dim consoleRowPos As Integer
- Dim sb As New StringBuilder()
- Dim tmpfile As FileInfo
- Dim bakFilePath As String
- For Each fi As FileInfo In New DirectoryInfo(dirPath).GetFiles("*.txt", SearchOption.TopDirectoryOnly)
- Console.WriteLine(String.Format("Parsing file....: {0}", fi.FullName))
- consoleRowPos = Console.CursorTop
- tmpfile = New FileInfo(Path.GetTempFileName)
- bakFilePath = Path.Combine(fi.DirectoryName, fi.Name & ".bak")
- For Each line As String In File.ReadLines(fi.FullName, enc)
- curLines += 1
- emailAddresses.Add(curLines, line)
- If (curLines = 10000) Then
- Dim results As List(Of Result) = emailValidator.ValidateList(emailAddresses, options)
- For Each result As Result In results
- ' sb.AppendLine(String.Format("Address: ""{0}""", result.EmailAddress))
- ' sb.AppendLine(String.Format("Status.: ""{0}""", result.Status.ToString()))
- ' sb.AppendLine()
- Select Case result.Status
- Case ValidationStatus.MaximumEmailsValidated
- Console.WriteLine(String.Format("{0} lines parsed, {1} valid emails.", totalLines.ToString("n0"), curValidMails.ToString("n0")))
- Console.WriteLine("Saving entries to original file...")
- fi.CopyTo(bakFilePath, overwrite:=True)
- tmpfile.CopyTo(fi.FullName, overwrite:=True)
- ' File.AppendAllLines(Path.Combine(fi.DirectoryName, fi.Name & "_validated.txt"), lineSet, enc)
- MsgBox("Reached maximum email validation checks: " & curLines.ToString("n0"))
- Environment.Exit(1)
- Case ValidationStatus.PassedAllRequestedValidation,
- ValidationStatus.WhiteListed,
- ValidationStatus.Greylisted,
- ValidationStatus.TimeoutExceeded,
- ValidationStatus.MailboxQuotaExceeded,
- ValidationStatus.ExceptionOccurred
- lineSet.Add(result.EmailAddress)
- curValidMails += 1
- curValidMails2 += 1
- Case Else
- ' Validation failed. Skip.
- End Select
- Next result
- totalLines += curLines
- curLines = 0
- Console.CursorTop = consoleRowPos
- Console.WriteLine(String.Format("{0} lines parsed, {1} valid emails.", totalLines.ToString("n0"), curValidMails.ToString("n0")))
- 'Debug.WriteLine(sb.ToString)
- 'sb.Clear()
- emailAddresses.Clear()
- End If
- If (curValidMails2 >= 10000000) Then
- Console.CursorTop = consoleRowPos
- Console.WriteLine("Saving new entries to temporary file... ")
- File.AppendAllLines(tmpfile.FullName, lineSet, enc)
- lineSet.Clear()
- emailAddresses.Clear()
- curValidMails2 = 0
- End If
- Next line
- Console.CursorTop = consoleRowPos
- Console.WriteLine(String.Format("{0} lines parsed, {1} valid emails.", totalLines.ToString("n0"), curValidMails.ToString("n0")))
- Console.WriteLine("Saving entries to temporary file...")
- File.AppendAllLines(tmpfile.FullName, lineSet, enc)
- Console.WriteLine("Saving entries to original file...")
- Console.WriteLine()
- tmpfile.Replace(fi.FullName, bakFilePath)
- 'fi.CopyTo(bakFilePath, overwrite:=True)
- ' fi.Delete()
- ' tmpfile.CopyTo(fi.FullName, overwrite:=True)
- ' File.AppendAllLines(Path.Combine(fi.DirectoryName, fi.Name & "_validated.txt"), lineSet, enc)
- lineSet.Clear()
- emailAddresses.Clear()
- curLines = 0
- curValidMails = 0
- curValidMails2 = 0
- totalLines = 0
- Next fi
- ' Parallel.ForEach(File.ReadLines(fi.FullName, enc), parallelOptions, New Action(Of String, ParallelLoopState, Long)(
- ' Sub(line As String, state As ParallelLoopState, value As Long)
- ' ' curLines += 1
- ' 'Dim emailResult As Result = Nothing
- ' 'Try
- ' ' emailResult = emailValidator.ValidEmail(line, options)
- ' ' 'Console.WriteLine(String.Format("Address: ""{0}""; Status: {1}", line, emailResult.Status.ToString()))
- ' 'Catch ex As KellermanSoftware.NetEmailValidation.ConnectionException
- ' ' MsgBox(ex.Message)
- ' 'Catch ex As System.Net.Sockets.SocketException
- ' ' MsgBox(ex.Message)
- ' 'Catch ex As System.Exception
- ' ' MsgBox(ex.Message)
- ' 'End Try
- ' 'Select Case emailResult.Status
- ' ' Case ValidationStatus.MaximumEmailsValidated
- ' ' File.AppendAllLines(Path.Combine(fi.DirectoryName, fi.Name & "_validated.txt"), lineSet, enc)
- ' ' MsgBox("Reached maximum email validation checks: " & curLines)
- ' ' Environment.Exit(1)
- ' ' Case ValidationStatus.PassedAllRequestedValidation,
- ' ' ValidationStatus.WhiteListed,
- ' ' ValidationStatus.Greylisted,
- ' ' ValidationStatus.TimeoutExceeded,
- ' ' ValidationStatus.MailboxQuotaExceeded,
- ' ' ValidationStatus.ExceptionOccurred
- ' ' lineSet.Add(line)
- ' ' curValidMails += 1
- ' ' Case Else
- ' ' ' Validation failed. Skip.
- ' 'End Select
- ' 'If (curValidMails = 1000) Then
- ' ' File.AppendAllLines(Path.Combine(fi.DirectoryName, fi.Name & "_validated.txt"), lineSet, enc)
- ' ' lineSet.Clear()
- ' ' curValidMails = 0
- ' 'End If
- ' End Sub))
- ' Console.WriteLine(String.Format("Saving file.....: {0}", fi.FullName))
- ' ' fi.CopyTo(Path.Combine(fi.DirectoryName, fi.Name & ".bak"))
- ' ' File.WriteAllLines(fi.FullName, lineSet, enc)
- ' File.AppendAllLines(Path.Combine(fi.DirectoryName, fi.Name & "_validated.txt"), lineSet, enc)
- ' lineSet.Clear()
- ' totalLines += curLines
- ' curLines = 0
- ' Console.WriteLine()
- 'Next
- MsgBox("Done !")
- Environment.Exit(0)
- End Sub
- End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement