Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to register the client who opened an email / a newsletter in ASP.net

For my internship I'm currently working on a web-based newsletter sending application in ASP.Net (C#). This application registers the open-rate of the send newsletters.

I'm using the one by one transparent image method, explained in the following article: http://www.pinpointe.com/blog/how-email-open-and-click-tracking-works to register the open-rate.

The applicaton can register the amount of opens, and the date/time an email was opened. The only thing missing is the client (program) the email was opened with. This information can help the design team to code proper HTML for the newsletter, that is readable in the most common email clients.

To track the client withs opened the email i'm currently using the user agent requesting the one by one image form our server. This information is stored in our database as shown below:

UserAgent string in database

Records 12 and 13 in this example holds an user agent "Microsoft Office Protocol Discovery". This user agent was registered when opening a newsletter in Microsoft Outlook.

Is there a way to get more specific information about a client? E.g. "Microsoft Outlook 2007" as the client.

like image 269
Ruud van de Beeten Avatar asked Nov 04 '22 21:11

Ruud van de Beeten


1 Answers

Seems it's hard to find a solution to this, but here what I have found so far:

Mailchimp seems to be doing this ( http://blog.mailchimp.com/see-what-email-programs-your-subscribers-use-with-user-agent-stats/ ) so it appears to be possible.

It might be worth your while to look into the X-Mailer header - http://msdn.microsoft.com/en-us/library/ms819781.aspx - Not Sure if it's put in the Header of the HTTP request but this field seems to contain the information you are looking for (as seen here - http://office.microsoft.com/en-us/outlook-help/view-e-mail-message-headers-HA001230300.aspx ).

Other than that all I can recommend is to do a few practice rounds from the different clients and check their request (Headers) for any identifying information.

Hope that helps a bit.

like image 186
Johann du Toit Avatar answered Nov 09 '22 10:11

Johann du Toit