c# - Web 服务器正在发送重复的电子邮件

标签 c# email webserver smtpclient mailmessage

对于我的网站发送的每一封电子邮件,我都会让它也给自己发送一封电子邮件。我注意到大约 5% 的电子邮件(每天数千封)被发送了两次。然而,发送副本之间的时间完全不一致......可以是一周、一个月或一分钟。完全不一致......我试图调试这个问题,但我永远无法复制这个问题。总是只发送一封电子邮件并正常工作。我没有想法,所以决定尝试从社区获得一些意见。任何见解将不胜感激...

public static void SendEmail(string subject, string body, string toAddress, string fromAddress)
    {
        MailMessage msg = new MailMessage();

        msg.From = new MailAddress(fromAddress);
        msg.To.Add(new MailAddress(toAddress));
        msg.Subject = subject;
        msg.Body = body;
        msg.IsBodyHtml = false;

        using (SmtpClient cli = new SmtpClient())
        {
            cli.Send(msg);
            cli.Dispose();
        }
    }

Dispose() 只是我最近未能解决问题的尝试之一....

以及调用该函数的 ascx 页面(请注意,如果电子邮件地址不为空,它会被调用两次,第一次发送给 myslef,第二次发送给客户。我在测试期间这样做并决定把它留在那里:

Txp.SendEmail(strOrderConfirmationHeader, strOrderConfirmationText, TxpConst.ORDERNOTIFYADDR, TxpConst.RETURNADDR);

if (!String.IsNullOrWhiteSpace(custemail))
{
    Txp.SendEmail(strOrderConfirmationHeader, strOrderConfirmationText, custemail, TxpConst.RETURNADDR);
}

它如此不一致的事实告诉我,它可能不是代码,也不是电子邮件服务器,因为邮件日志每次都显示已完成的事务,并且每次都获得不同的消息 ID...我都没有想法!

最佳答案

好的,我相信您已经考虑过了,但是您确定您的访问者没有点击“提交”两次吗?

这种情况我见过很多次,尤其是在电子邮件服务器运行速度有点慢的时候。用户认为该站点没有做任何事情,因此再次单击提交。 (或者他们只是双击按钮 - 也看到了!)

您可能只需要在您的应用中添加一些代码来防止多次提交。这是一个相当普遍的问题。

希望对你有帮助。

关于c# - Web 服务器正在发送重复的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182739/

相关文章:

php - 通过 Gmail 或什至 Google App Engine 发送大量电子邮件?

PHP-发送每日电子邮件

linux - 在两台 Linux 机器之间实现请求/响应端口转发

使用生产数据的瓶颈性能测试应用程序

c# - 从具有共同值的字典中获取 TKey,其中 TValue 是 List<string>

objective-c - 无需 GUI 即可发送电子邮件

c# - 当鼠标悬停在另一个椭圆上时,如何更改椭圆的填充颜色?

http - 如何在node js中存储大型二进制文件?

c# - 尝试在 WPF 中绘制矩形立方体的边缘但未成功

c# - EF 自定义结果集映射