我有一个电子邮件方法,我在OnPageLoad
中呼叫C# 4.0
。当页面加载时,它会向用户发送电子邮件。问题是,当用户刷新页面时,每次它都会向用户生成电子邮件,这是不可接受的。我的方法只有在页面打开时才第一次执行。我正在调用这样的方法< / p>
if (!IsPostBack)
{
Sendemail(emailid, "ibrahim.cheema@shakarganj.com.pk", "SML Dashboards Access", "<b><font color=red>Dashboard Access Alert!</font></b> <br></br>Note: If the access is by yourself, then please ignore this email.<br><br>SML Dashboards accessed using your credentials<br><b>" + emailid + "<br><b>Location / IP Address :</b>" + GetUserIP());
}
这样,用户在刷新页面时始终会收到电子邮件。我怎么能避免它?
答案 0 :(得分:1)
您可以选择存储Cookie并在发送电子邮件之前检查Cookie是否存在。 这是最简单的方法,最好的方法是将变量保存在数据库中的用户配置文件表中(如果有的话)。这是最安全的方式,因为cookie和会话不是无限的。
答案 1 :(得分:0)
if(Session[emailid]==null)
{
// SEND
Session[emailid]==true;
}
请记住,会话可能会在超时或IIS重启等不同情况下重置,并且会在下次会话启动时再次发送电子邮件。如果您希望这封电子邮件一生只发送一次 - 您将不得不在数据库中保留已发送的标志。
答案 2 :(得分:0)
正如stack-starTrekkers的同事所提到的,方法是
在客户端系统上存储信息 - 明显的危险:(
维护会话变量 - 重置事件会妨碍其可用性 - 这种情况可以通过持久保存到本地磁盘来处理,或者因为服务可以由多台服务器机器处理,也可以处理为全局可视(对于服务服务器)持久层是一个流,数据库,在云中的位置。
其他解决方案可能是将此逻辑从页面移动到邮件服务 - 这是更多工作但更清晰的方法。