Email Tracking using asp.net
<p>I want to track users who have read my mails.I am doing this but it's not working
 I am sending mails to myself in outlook.
 Here is my code which sends mails</p>

<pre><code>  try
        {

        string emailTemplateBody = "Hy this is test mail";
        emailTemplateBody += "&lt;tr&gt;&lt;img src=''http://localhost:52583/HttpModule_using_beacon_images/images/&lt;keyvalue&gt;.aspx''  style=''opacity:0.0; filter:alpha(opacity=0);'' /&gt;&lt;/tr&gt;";



        string templateName = txtTemplateName.Text;

                    string toEmail = mymailaddress

        //// Get unique Key after registring mail to be sent
        string key = bl_email_calls.RegisterSystemEmailAudit("1", templateName, DateTime.Now);
        emailTemplateBody = emailTemplateBody.Replace("&lt;keyvalue&gt;", key);
        //// sending e-mail
        bl_email_calls.SendMailMessage(toEmail, templateName, emailTemplateBody, key);
        using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["webConnectionString"].ToString()))
        {
           //code to insert record in database;            }
        Response.Write("Mail sent");
        // return false;
    }
    catch (Exception ex)
    {

        throw;
    }
</code></pre>

<p>Here is my HTTP module i have used from http://www.aspnetemail.com/samples/emailtracker/default.aspx[^]</p>

<pre><code>public class HttpModuleClass : IHttpModule
{
    //public event EventHandler BeginRequest;

    public void Dispose()
    {

    }

    /// &lt;summary&gt;
    /// public varibles
    /// &lt;/summary&gt;
    string footerFile = "~/images/footer.png";
    //string footerFile = "~/images/ajax-loader.gif";
    Email_Calls bl_email_calls = new Email_Calls();

    /// &lt;summary&gt;
    /// Init methoed
    /// &lt;/summary&gt;
    /// &lt;param name="context"&gt;&lt;/param&gt;
    public void Init(HttpApplication context)
    {
        context.BeginRequest += new System.EventHandler(GetImage_BeginRequest);
    }

    /// &lt;summary&gt;
    /// handles requests made to server and call update email read time
    /// &lt;/summary&gt;
    /// &lt;param name="sender"&gt;&lt;/param&gt;
    /// &lt;param name="args"&gt;&lt;/param&gt;
    public void GetImage_BeginRequest(object sender, System.EventArgs args)
    {
        //cast the sender to a HttpApplication object
        System.Web.HttpApplication application = (System.Web.HttpApplication)sender;

        string url = application.Request.Path; //get the url path
        //string pattern = @"/HttpModule/images/(?&lt;key&gt;.*)\.aspx";
        //string pattern = @"/HttpModule_using_beacon_images/images/(?&lt;key&gt;.*)\.aspx";

        string pattern = @"/HttpModule_using_beacon_images/images/(?&lt;key&gt;.*)\.aspx";
        //string pattern = @"~/images/(?&lt;key&gt;.*)\.aspx";
        //create the regex to match for beacon images
        Regex r = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
        if (r.IsMatch(url))
        {
            MatchCollection mc = r.Matches(url);
            if ((mc != null) &amp;&amp; (mc.Count &gt; 0))
            {
                string key = (mc[0].Groups["key"].Value);
                bl_email_calls.UpdateSystemEmailAuditReadDate(key);

            }

            //now send the REAL image to the client
            //application.Response.ContentType = "image/gif";
            application.Response.ContentType = "image/png";

            application.Response.WriteFile(application.Request.MapPath(footerFile));

            //end the response
            application.Response.End();
        }
    }
}
</code></pre>
