我编写了一个代码,只要用户从前端添加内容,就会向管理员发送邮件进行审核......问题是管理员有时会收到两封内容相同的邮件。
下面是我的代码
MailMessage mail = new MailMessage();
string mailto = ConfigurationManager.AppSettings["adminStoryEmail"].ToString();
mail.To.Add(mailto);
//mail.To.Add("vidyasagar.patil@viraltech.in");
mail.From = new MailAddress(ConfigurationManager.AppSettings["fromEmail"]);
mail.Subject = ConfigurationManager.AppSettings["email_subject"];
if (uploadedpath != "")
{
mail.Body = "Email ID : " + txtEmail.Text + "<br /> Title : " + txtStoryTitle.Text + "<br />" + " Download : " + " http://www.achievewithdell.in/uploads/" + uploadedpath + "<br />";
if (story != "")
{
mail.Body += "New story has been added" + " http://www.achievewithdell.in/admin/ManageStory.aspx";
}
}
else
{
mail.Body = "Email ID : " + txtEmail.Text + "<br /> Title : " + txtStoryTitle.Text + " <br />";
if (story != "")
{
mail.Body += "New story has been added" + " http://www.achievewithdell.in/admin/ManageStory.aspx";
}
}
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = ConfigurationManager.AppSettings["smtp_host"]; //Or Your SMTP Server Address
smtp.Port = 25;
smtp.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["smtp_userid"], ConfigurationManager.AppSettings["smtp_password"]); //Or your Smtp Email ID and Password
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(mail);
答案 0 :(得分:0)
调试并确保未调用smtp Send()方法两次,在该行上放置一个断点。
答案 1 :(得分:0)
您说有时电子邮件会被发送两次。这表明你给我们的代码很好,问题可能在于调用代码的问题。
你可以消除重复的一种方法是将你的邮件排队,也许是在数据库中(存储:to,from,subject,body等)。然后定期,遍历要发送的邮件,忽略重复并标记已发送的邮件,以便不再发送邮件。
像其他海报建议的那样,将重构失败到你的应用程序中,取出你的调试器并设置一个断点。根据您的Visual Studio版本,您可以使用Breakpoint Hit Count,因此您只能在第二次断点处着陆。