我想跟踪读过我邮件的用户。我这样做但是没有用 我在前景中发送邮件给自己。 这是我发送邮件的代码
try
{
string emailTemplateBody = "Hy this is test mail";
emailTemplateBody += "<tr><img src=''http://localhost:52583/HttpModule_using_beacon_images/images/<keyvalue>.aspx'' style=''opacity:0.0; filter:alpha(opacity=0);'' /></tr>";
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("<keyvalue>", 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;
}
这是我在http://www.aspnetemail.com/samples/emailtracker/default.aspx使用的HTTP模块[^]
public class HttpModuleClass : IHttpModule
{
//public event EventHandler BeginRequest;
public void Dispose()
{
}
/// <summary>
/// public varibles
/// </summary>
string footerFile = "~/images/footer.png";
//string footerFile = "~/images/ajax-loader.gif";
Email_Calls bl_email_calls = new Email_Calls();
/// <summary>
/// Init methoed
/// </summary>
/// <param name="context"></param>
public void Init(HttpApplication context)
{
context.BeginRequest += new System.EventHandler(GetImage_BeginRequest);
}
/// <summary>
/// handles requests made to server and call update email read time
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
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/(?<key>.*)\.aspx";
//string pattern = @"/HttpModule_using_beacon_images/images/(?<key>.*)\.aspx";
string pattern = @"/HttpModule_using_beacon_images/images/(?<key>.*)\.aspx";
//string pattern = @"~/images/(?<key>.*)\.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) && (mc.Count > 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();
}
}
}
答案 0 :(得分:2)
要请求阅读回执,我们需要添加名为'Disposition-Notification-To'
的自定义标头
在这个例子中,阅读收据将返回到#ad; someaddress@mydomain.com'
重要的是要注意阅读收据只会由那些邮件客户发送
a)支持他们
和
b)启用它们。
//为阅读回执
添加"Disposition-Notification-To"
mail.Headers.Add("Disposition-Notification-To", "<mail@yahoo.com>");
答案 1 :(得分:0)
我明白了。我犯了一些小错误。
实际上我是将电子邮件正文保存到数据库中,所以我不得不使用''
而不是'
,这就麻烦了。何时被删除''它工作正常。