Send a Plain Text and HTML Newsletter using System.Net.Mail
By Steve Schofield
October 17, 2006
This article shows how to send an email that includes a Plain Text and HTML version.
The appropriate version will be displayed by the email client.
This depends on how your email client configured, usually an HTML
version will display. The webpage uses System.Net.Mail
built into .NET 2.0 to send the email. Note: This article requires the .NET 2.0 framework
Deployment and Testing
- Ensure the SMTP Service is installed on the machine.
- Create two files
named Sendmail.aspx and Sendmail.aspx.vb
- Deploy to your website.
- 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("mail.iislogs.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:
Steve Schofield is a Senior Internet Support
Specialist with
ORCS Web, Inc.
- a company that provides managed hosting solutions for clients who develop and deploy their applications on Microsoft Windows platforms. Services include shared hosting, dedicated hosting, and webfarm hosting, with specialty in .Net, SQL Server, and architecting highly scalable solutions.