业务需求
使用 .Net 服务发送的邮件,如何统计打开率?
解决方案
在邮件中附加一张图片,图片 src 路径为 .Net WebAPI 提供的图片资源。
当图片加载时,可以传递参数进行数据分析。
注意事项
图片资源为 HTTPS 路径可以直接加载使用;
如果为 HTTP 路径则会被邮件进行默认替换。
代码范例
[HttpGet] [AllowAnonymous] [Route("SendTestNewsLetter")] public async Task SendTestNewsLetter(string mailToAddress) { var gid = Guid.NewGuid(); var imgUrl = $"{UtoolsWebAPIUrl}/api/Vendor/GetNewLetterImage?gid={gid}"; var htmlBody = @"<!DOCTYPE html> <html> <body> <img src='" + imgUrl + @"' alt='Test image' /> <h2>NewsLetter mail body text</h2> </body> </html>"; await NetEase163MailHelper.SendMail($"Newsletter mail subject - {gid}", htmlBody, mailToAddress); } [HttpGet] [AllowAnonymous] [Route("GetNewLetterImage")] public IActionResult GetNewLetterImage(string gid) { _logger.LogDebug($"SaveTestNewsLetterStatus, gid_image={gid}"); var image = System.IO.File.OpenRead("Content/dining.png"); return File(image, "image/jpeg"); }
使用效果
Web Mail 可以直接请求图片资源,获取到邮件参数;
在 PC Outlook 中需要手工允许图片资源下载。
参考资料