Typical way to track emails is to use a 1x1 image. Something like this:
<img src="yourserver.com/tracker encoded way of identifying the recipient"/>
Your tracker would serve up a 1x1 .gif as the image. Tracking can then include all sorts of info since it's a server call. You can get date/time stamp it opened, possibly email or web client used, etc.
I used to work for an email service provider, and this is the way we, and our competitors did it. The only issue with this is that the end user has to turn on images. Of course, if you have links that they click on, they'd have to turn on images for that.
Of course, if you don't want to do this yourself, there are services out there that handle email sending and tracking. MailChimp, for example, has a free tier. And most have APIs where you can send directly from your application.