Skip to main content

Sending Email from Asp.net With Dynamic Content

Introduction:

Here I will explain how to Sending Email from Asp.net With Dynamic Content using asp.net in c#.
  
 
 
Mailcontant.html page
 
This is your actual data here you can apply CSS styles also .
 
<table border="1" style="font-family:Arial; border-color:Black; font-  size:11px;"cellspacing="0" cellpadding="2">
            <tr>
                <td width="120">ID :td>
                <td width="190">#id#td>
            tr>
            <tr>
                <td>Request Date :td>
                <td>#enquirydate#td>
            tr>           
            <tr>
                <td>Customer Name :td>
                <td>#customername#td>
            tr>
            <tr>
                <td>Customer Address1 :td>
                <td>#custaddress1#td>
            tr>
            <tr>
                <td>Customer Address2 :td>
                <td>#custaddress2#td>
            tr>
            <tr>
                <td>State :td>
                <td>#state#td>
            tr>
            <tr>
                <td>City :td>
                <td>#city#td>
            tr>
           
            <tr>
                <td>Remarks :td>
                <td>#remarks#td>
            tr>           

        table>


public static void sendmail(string ID,string mailbody)
{
string mailbodytext = "";
string mailID = string.Empty;
StreamReader sr = newStreamReader(HttpContext.Current.Server.MapPath("Mailcontant.html"));
sr = File.OpenText(HttpContext.Current.Server.MapPath("Mailcontant.html "));
mailbodytext = sr.ReadToEnd();
sr.Close();
string squery = string.Empty;
squery = "select * from Detail where ID='" + ID + "'";
DataTable  dr = DataAccess.getDataTable(squery);
// Replace your Variables to  actual data
if (dr.Rows.Count > 0)
{
mailbodytext = mailbodytext.Replace("#id#", ID);
mailbodytext = mailbodytext.Replace("#enquirydate#", Convert.ToDateTime(dr.Rows[0]["Date"]).ToString("dd/MM/yyyy"));
mailbodytext = mailbodytext.Replace("#customername#", dr.Rows[0]["Cust_Name"].ToString());
mailbodytext = mailbodytext.Replace("#custaddress1#", dr.Rows[0]["Cust_Address1"].ToString());
mailbodytext = mailbodytext.Replace("#custaddress2#", dr.Rows[0]["Cust_Address2"].ToString());
mailbodytext = mailbodytext.Replace("#state#", dr.Rows[0]["State"].ToString());
mailbodytext = mailbodytext.Replace("#city#",
dr.Rows[0]["City"].ToString());
mailbodytext = mailbodytext.Replace("#remarks#", dr.Rows[0]["Remarks"].ToString());
}

SmtpClient smtp = new SmtpClient();
MailMessage msg = new MailMessage();
smtp.EnableSsl = true;
msg.IsBodyHtml = true;
msg.To.Add(new MailAddress(ConfigurationManager.AppSettings["EmailTo"].ToString()));
msg.Subject = "Request - " + FeasibilityID;
msg.Body = mailbody + "
"
 + mailbodytext;
smtp.EnableSsl = true;
object state = msg;
smtp.SendCompleted += new SendCompletedEventHandler(smtpClient_SendCompleted);
smtp.Send(msg);
}
private static void smtpClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
        MailMessage mail = e.UserState as MailMessage;
        if (!e.Cancelled && e.Error != null)
        {
            message.Text = "Mail sent successfully";
        }
        else
        {
            message.Text = "Error occured";
        }
 }

Add smtp server setting in web.config file
<system.net>
<mailSettings>
<smtp from="work@gmail.com" deliveryMethod="Network">
<network host="smtp.gmail.com" port="587"
userName="work@gmail.com" password="12345"/>
smtp>
mailSettings>
system.net>

Comments

Popular posts from this blog

How to hide url parameters in asp.net

There are different ways to Hide the URL in asp.net , you can choose any one from bellow options . Previously I was Explained about the  Difference between Convert.tostring and .tostring() method Example  ,   Reasons to use Twitter Bootstrap , How to Register AJAX toolkit in web.config file in asp.net a) Using Post Method b) Using Of Session . c) URL Encoding & decoding process . d) Using Server.Transfer() instead of Response.Redirect() method (1)Use a form and POST the information. This might require additional code in source pages, but should not require logic changes in the target pages (merely change Request.QueryString to Request.Form). While POST is not impossible to muck with, it's certainly less appealing than playing with QueryString parameters. (2)Use session variables to carry information from page to page. This is likely a more substantial effort compared to (1), because you will need to take session variable checking into account...

ASP.NET Routing

ASP.NET routing enables you to use URLs that do not have to map to specific files in a Web site. Because the URL does not have to map to a file, you can use URLs that are descriptive of the user's action and therefore are more easily understood by users. The ASP.NET MVC framework and ASP.NET Dynamic Data extend routing to provide features that are used only in MVC applications and in Dynamic Data applications. For more information about MVC, see ASP.NET MVC 3 . For more information about Dynamic Data, see ASP.NET Dynamic Data Content Map . In an ASP.NET application that does not use routing, an incoming request for a URL typically maps to a physical file that handles the request, such as an .aspx file. For example, a request for http://server/application/Products.aspx?id=4 maps to a file that is named Products.aspx that contains code and markup for rendering a response to the browser. The Web page uses the query string value of id=4 to determine what type of c...

How to send mail asynchronously in asp.net with MailMessage

With Microsoft.NET Framework 2.0 everything is asynchronous and we can send mail also asynchronously. This features is very useful when you send lots of bulk mails like offers , Discounts , Greetings . You don’t have to wait for response from mail server and you can do other task . By using     SmtpClient . SendAsync Method (MailMessage, Object)    you need to do  System.Net.Mail has also added asynchronous support for sending email. To send asynchronously, you need need to Wire up a SendCompleted event Create the SendCompleted event Call SmtpClient.SendAsync smtpClient.send() will initiate the sending on the main/ui  thread and would block.  smtpClient.SendAsync() will pick a thread from the .NET Thread Pool and execute the method on that thread. So your main UI will not hang or block . Let's create a simple example to send mail. For sending mail asynchronously you need to create a event handler that will notify that mail success...