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

时间:2013-10-04 13:40:30

标签: 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并且第二次将客户发送到myslef。我在测试期间执行此操作并决定留在那里:

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

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

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

1 个答案:

答案 0 :(得分:0)

好的,我确定你已经考虑过这个,但你确定你的访客没有“提交”两次吗?

我已经多次见过这种情况,特别是当电子邮件服务器运行缓慢时。用户认为该网站没有做任何事情,因此请再次点击提交。 (或者他们只是双击按钮 - 也看到了!)

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

希望这会对你有所帮助。