Send a Plain Text and HTML newsletter using System.Net.Mail namespace

Send a Plain Text and HTML newsletter using System.Net.Mail namespace


 


This article shows how to send an email that includes a Plain Text and HTML version.   The email client will display which version it is applicable.   The webpage uses System.Net.Mail built into .NET 2.0 to send the email. 


 


Deployment and Testing


 


·        Create two files named Sendmail.aspx and Sendmail.aspx.vb


·        Deploy to your website.


·        Ensure the SMTP Service is installed on machine


·        Open sendmail.aspx in a browser and send a test message


·        Open your test message in an email client, this should display an HTML version.


·        Change your email client to only view message in Text format, the ‘text’ version should display.


 


Sendmail.aspx webpage


 


<%@ Page Language=”VB” AutoEventWireup=”false” CodeFile=”sendmail.aspx.vb” ValidateRequest=”false” Inherits=”_Default” %>


 


<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>


 


<html xmlns=”http://www.w3.org/1999/xhtml” >


<head runat=”server”>


    <title>Send a Plain Text and HTML form</title>



|</head>


<body>


    <form id=”form1″ runat=”server”>


    <asp:Label ID=”label1″ runat=”server”></asp:Label>


    <table border=”1″ width=”505px”>


        <tr>


            <td style=’width: 7px’>


                From</td>   


            <td>


                <asp:TextBox ID=”txtFrom” runat=”server” Width=”155px”></asp:TextBox></td>   


        </tr>


        <tr>


            <td style=’width: 7px’>


                To:</td>   


            <td>


                <asp:TextBox ID=”txtTo” runat=”server” Width=”157px”></asp:TextBox></td>   


        </tr>


        <tr>


            <td style=’width: 7px; height: 23px’>


                Subject</td>   


            <td style=’height: 23px’>


                <asp:TextBox ID=”txtSubject” runat=”server” Width=”505px”></asp:TextBox></td>   


        </tr>   


        <tr>


            <td colspan=”2″>


                TEXT Version Paste or type in text</td>   


        </tr>


         <tr>


            <td colspan=”2″>


            <asp:TextBox ID=”txtText” TextMode=”MultiLine” Columns=”20″ Rows=”20″ runat=”server” Width=”556px” Height=”202px”>



This is the Text version



</asp:TextBox>


            </td>


         </tr>         


         <tr>


            <td colspan=”2″>


                HTML Version Paste or type in HTML formatted text</td>   


        </tr>


         <tr>


            <td colspan=”2″>


            <asp:TextBox ID=”txtHTML” TextMode=”MultiLine” Columns=”20″ Rows=”20″ runat=”server” Width=”559px” Height=”249px”>
<html>


     <body>


     <h2>This is the HTML version</h2>


     </body>


</body>
</asp:TextBox>


            </td>


         </tr>


    </table>


        <asp:Button ID=”Button1″ runat=”server” Text=”Button” />


   


        </form>


</body>


</html>


 


Sendmail.aspx.vb code behind


 


Partial Class _Default


    Inherits System.Web.UI.Page


 


    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click


        ‘Create the mail message


        Dim mail As New System.Net.Mail.MailMessage()


        mail.BodyEncoding = Encoding.GetEncoding(“iso-8859-1″)


 


        ‘Set the addresses


        mail.From = New System.Net.Mail.MailAddress(txtFrom.Text.ToString())


        mail.To.Add(txtTo.Text.ToString())


 


        ‘Set the content
        mail.Subject = txtSubject.Text.ToString()


 


        ‘Create the Plain Text part


        Dim plainView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtText.Text.ToString(), Nothing, “text/plain”)


        plainView.TransferEncoding = Net.Mime.TransferEncoding.QuotedPrintable


 


        ‘Create the Html part


        Dim htmlView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtHTML.Text.ToString(), Nothing, “text/html”)


        htmlView.TransferEncoding = Net.Mime.TransferEncoding.QuotedPrintable


 


        mail.AlternateViews.Add(plainView)


        mail.AlternateViews.Add(htmlView)


 


        ‘Send the message


        Dim smtp As New System.Net.Mail.SmtpClient(“example.com”) ‘specify the mail server address


        smtp.Send(mail)


        label1.Text = “<b>Message Sent:” & System.DateTime.Now() & “</b>”


 


    End Sub ‘MultiPartMime   


End Class


 


Reference Links


 


·        http://msdn2.microsoft.com/en-us/library/system.net.mail.aspx


·        http://www.systemnetmail.com


·        PINE Text based email client.  http://www.washington.edu/pine/getpine/