Link to home
Start Free TrialLog in
Avatar of dotsandcoms
dotsandcoms

asked on

track open rate of email newsletter

hi folks,

I am sending the newsletter to some of the users. I want to track whether they have opened the newsletter or not programmatically.

how can i achieve this?

Any help will be appreciated.
Avatar of AndyAinscow
AndyAinscow
Flag of Switzerland image

>>I am sending...

You can't, the best you can hope for is to ask them to inform you they have done so.
ASKER CERTIFIED SOLUTION
Avatar of darshan_derasari
darshan_derasari
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
If you have told your customers that you will be placing becon images in newsletters, then you are within your right to place a transparent 1px by 1px image inside your email.  Point this becon image to be an ASPX page that can keep track in a database of the number of hits to it.

Cheers,

G.
Its a tricky thing to do, because most mail clients will block images, because thats how spammers confirm a working email address, so your stats, if using images, wont be completely accurate.

Another way would be to require a read receipt, but a lot of web based emails dont support this, and even if it does, some people just ignore it or choose not to send it.

You could use a cheeky JavaScript that launched on page load to call a handler page that updated your database, but the user could be reading mail whilst offline, or the script could be blocked.

If this is a request from the marketing team, I'd advise them that there's no certain way of knowing how many people have read the newsletter :)
Avatar of dotsandcoms
dotsandcoms

ASKER

hi darshan_derasari,

how can i return the image in response.

I am using the below coding but not getting the image in return:

 PowerGeneralFunction objGen;
   
    string strQuery = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["campid"] == null)
        {
            if (Request.QueryString["campid"].ToString() == "")
            {
                Response.Redirect("http://www.cocoona.ae/");
            }
        }

        if (Request.QueryString["emailid"] == null)
        {
            if (Request.QueryString["emailid"].ToString() == "")
            {
                Response.Redirect("http://www.cocoona.ae/");
            }
        }

        this.Camp_Details();
    }
    protected string Camp_Details()
    {
        int result = 0;
        objGen = new PowerGeneralFunction();


        try
        {
            strQuery = "Insert into campaignRead (campid,nemail,addedip,addeddate,readnl) values ( " + Request.QueryString["campid"].ToString().Replace("'", "'") + ",'" + Request.QueryString["emailid"].ToString().Replace("'", "'") + "','" + this.FinalIP() + "','" + System.DateTime.Now + "',1)";
            result = objGen.InsertUpdateDeleteCommand(strQuery);
            if (result > 0)
            {
                return "http://www.cocoona.ae/images/knews.jpg";
            }

        }
        catch (Exception ex)
        {
            return "http://www.cocoona.ae/images/knews.jpg";

        }
        finally
        {
            strQuery = "";
           
            objGen = null;
        }

        return "http://www.cocoona.ae/images/knews.jpg";
    }

    public string FinalIP()
    {
        string strHostName = "";
        strHostName = System.Net.Dns.GetHostName();
        IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
        IPAddress[] addr = ipEntry.AddressList; return addr[addr.Length - 1].ToString();
    }
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
thanks