This article explains how to send an email with attachments using SmtpClient.SendAsync. My previous article explained sending Asynchronous Emails in ASP.NET 4.5 I will now explain how to implement send asynchronous mail with an attachment in ASP.NET 4.5.
Creating an Asynchronous Page
Create a new project using "File" -> "New" -> "Project..." then select web "ASP .Net Web Forms Application". Name it " SendMailAsyncAttachment ".

Next, create the code-behind as follows: The first step to building an asynchronous page is setting the Async attribute in the Page directive to true, as shown here:

<%@ Page Language="C#" Async="true" %>
Now, in the code behind file SendMailAttach.aspx use the following code.
SendMailAttach.aspx
- <%@ Page Title="Sendmailasync with attachment" Async="true" Language="C#"
- MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="SendMailAttach.aspx.cs"
- Inherits="SendMailAsyncAttachment.SendMailAttach" %
- <asp:Content ID="Content1" ContentPlaceHolderID="titleContent" runat="server">Sendmailasync with
- attachment
- </asp:Content>
- <asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server">
- <script type="text/javascript">
- function validationCheck() {
- var summary = "";
- summary += isvalidName();
- summary += isvalidEmail();
- summary += isvalidSubject();
- summary += isvalidMessage();
- if (summary != "") {
- alert(summary);
- return false;
- }
- else {
- return true;
- }
- }
- function isvalidName() {
- var id;
- var temp = document.getElementById("<%=txtName.ClientID %>");
- id = temp.value;
- if (id == "") {
- return ("Please enter Name" + "\n");
- }
- else {
- return "";
- }
- }
- function isvalidEmail() {
- var id;
- var temp = document.getElementById("<%=txtEmail.ClientID %>");
- id = temp.value;
- var re = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
- if (id == "") {
- return ("Please Enter Email" + "\n");
- }
- else if (re.test(id)) {
- return "";
- }
- else {
- return ("Email should be in the form [email protected]" + "\n");
- }
- }
- function isvalidSubject() {
- var id;
- var temp = document.getElementById("<%=txtSubject.ClientID %>");
- id = temp.value;
- if (id == "") {
- return ("Please enter Subject" + "\n");
- }
- else {
- return "";
- }
- }
- function isvalidMessage() {
- var id;
- var temp = document.getElementById("<%=txtMessage.ClientID %>");
- id = temp.value;
- if (id == "") {
- return ("Please enter Message" + "\n");
- }
- else {
- return "";
- }
- }
- </script>
- </asp:Content>
- <asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
- <table style="width: 100%;">
- <tr>
- <td>Name:</td>
- <td>
- <asp:TextBox ID="txtName" runat="server" CssClass="txt"></asp:TextBox></td>
- <td> </td>
- </tr>
- <tr>
- <td>Email ID:</td>
- <td>
- <asp:TextBox ID="txtEmail" runat="server" CssClass="txt"></asp:TextBox></td>
- <td> </td>
- </tr>
- <tr>
- <td>Subject:</td>
- <td>
- <asp:TextBox ID="txtSubject" runat="server" CssClass="txt"></asp:TextBox></td>
- <td> </td>
- </tr>
- <tr>
- <td>Attach a file:</td>
- <td>
- <asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" />
- </td>
- <td></td>
- </tr>
- <tr>
- <td>Message:</td>
- <td>
- <asp:TextBox ID="txtMessage" runat="server" Height="100px" Width="200px"
- CssClass="textarea" TextMode="MultiLine"></asp:TextBox>
- </td>
- <td> </td>
- </tr>
- <tr>
- <td></td>
- <td>
- <asp:Button ID="btnSendMail" runat="server" Text="Send Mail" CssClass="button"
- OnClick="btnSendMail_Click" /></td>
- </tr>
- </table>
- </asp:Content>




Join the conversation! Your thoughts help the community grow.