Sending Mass/Bulk E-mail Using ASP.NET

Mass/Bulk E-mail Sending

Mass/Bulk E-mail Sending

I was asked some time ago to develop an application which involved sending multiple email messages. Later i realized that it is known as mass mail sender.

Means, if you launch an email marketing campaign sending a targeted newsletters and advertisements, you need a mass/bulk sender for that.

Although i have never used any, in fact i know how they work.  Hey – you’re talking to the email king here. I am just kidding … let’s move on!


The spammers (i hope you are not one of them) usually are getting mail lists in Text format *.txt so they need the sender software to supports it. Once the sender imports the list it starts sending your newsletter/advert to all email addresses from the just imported list. Pretty cool right?

Well, if you thought so then i must dissapoint you. There are a lot of requirements that must be met before you will be able to use your sender. You need to set up reverse DNS (PTR Record), Domain keys, SPF records, MX records, Get your IP address whitelisted and much more but, it is out of scope of this post.

As mentioned earlier we should first import the email addresses from the text file(s). So let’s do that. I assumed that you keep the text lists in Email_Lists folder.

    Protected Sub btnImport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnImport.Click
        Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("MyConn").ConnectionString)
        Try
            connection.Open()
            For Each txt As String In Directory.GetFiles(Server.MapPath("Email_Lists"))
                Dim emails() As String = IO.File.ReadAllLines(txt)
                Dim reg As New System.Text.RegularExpressions.Regex("\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*")
                For Each email As String In emails
                    If reg.IsMatch(email) Then
                        Dim cmd As New SqlCommand()
                        cmd.Connection = connection
                        cmd.CommandText = "INSERT INTO EmailAddresses (Email) VALUES(@email)"
                        cmd.CommandType = Data.CommandType.Text
                        cmd.Parameters.Add("@email", Data.SqlDbType.VarChar).Value = email
                        cmd.ExecuteNonQuery()
                        cmd.Dispose()
                    End If
                Next
            Next
        Catch ex As Exception
            Response.Write(ex.Message)
        Finally
            connection.Close()
        End Try
    End Sub

Ok we imported the new email addresses so now we are ready to move on.

The next step would be to send your newsletter or advert to the newly added recipients. I will not bother explaining all of it, but only those necessary parts, so here we go.

From the design aspect you should end up with something like this:

Mass Sender WebForm

In the background you just need an implementation of the MailMessage and SmtpClient classes:

    Private Sub StartCampaign()
        Dim connection As New SqlConnection("Data Source=xx.xxx.xxx.xxx,1433;" & _
                                            "Initial Catalog=MyDB;" & _
                                            "User ID=xxxxxx;Password=xxxxxxxx;")

        Try
            connection.Open()
            Dim command As New SqlCommand("SELECT TOP(@count) Email FROM EmailAddresses", connection)
            command.Parameters.Add("@count", Data.SqlDbType.Int).Value = Me.txtNumberOfMessages.Text
            Dim reader As SqlDataReader = command.ExecuteReader

            While reader.Read
                ' send new email to all returned addresses
                SendEmail(reader(0).ToString)
            End While
            reader.Close()
        Catch ex As Exception
            ' ToDo: something about the exception if any
        Finally
            connection.Close()
        End Try

    End Sub

    Private Sub SendEmail(ByVal email As String)
        ' declare new mail message
        Dim message As MailMessage = New MailMessage
        ' if you plan to have html content then enable property IsBodyHtml
        message.IsBodyHtml = True
        ' set the message subject
        message.Subject = Me.txtSubject.Text.Trim
        message.From = New MailAddress("youremail@domain.com", "Your Company Name - Newsletter")
        message.To.Add(New MailAddress(email))
        ' set the message body
        message.Body = Me.txtMessage.Text
        ' declare new smtpclient to send our message
        Dim mailClient As SmtpClient = New SmtpClient(Me.txtSmtp.Text, Me.txtSmtpPort.Text)
        mailClient.Send(message)
        message.Dispose()
    End Sub

That’s it my friends. You just learned the basics of sending bulk email. Congrats!!

Kulrom 
 

10 thoughts on “Sending Mass/Bulk E-mail Using ASP.NET

  1. I will met the requirement that need to send mass emails. Please can you tell me all the requirement. I will be grateful.

  2. Hey,

    Can you please help me with this, i really need some thing like that, i don’t understand things on the page? i want to have a software that can do this, so please if you can help me let me know.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>