Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web服务器正在发送重复的电子邮件_C#_Email_Webserver_Smtpclient_Mailmessage - Fatal编程技术网

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

C# Web服务器正在发送重复的电子邮件,c#,email,webserver,smtpclient,mailmessage,C#,Email,Webserver,Smtpclient,Mailmessage,对于我的网站发送的每一封电子邮件,我让它也给自己发送一封电子邮件。我注意到大约5%的电子邮件(每天数千封)被发送了两次。但是,发送副本之间的时间完全不一致…可以是一周、一个月或一分钟。完全不一致…我已尝试调试该问题,但我无法复制该问题。始终只发送一封电子邮件并正常工作。我没有主意了,所以决定尝试从社区获得一些意见。如有任何见解,将不胜感激 public static void SendEmail(string subject, string body, string toAddress, str

对于我的网站发送的每一封电子邮件,我让它也给自己发送一封电子邮件。我注意到大约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…我完全没有主意!

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

我已经见过很多次了,尤其是当电子邮件服务器运行有点慢的时候。用户认为网站没有做任何事情,所以再次单击“提交”。(或者他们只是双击按钮-也看到了!)

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


希望这对您有所帮助。

如果您想发送给两个人,而不是两次呼叫,只需将两个人添加到物理
MailMessage
上的
to
集合中。这是该
SendMail
方法的唯一入口点吗?或者,如果您不想让原始收件人看到备用电子邮件广告,请将其密件抄送给他们着装。你的发送电子邮件代码只会发送一封电子邮件。要调试这类事情,你需要添加一些日志记录,这样你就可以追溯这些电子邮件的来源。不,它在其他地方也有使用,但有不同的主题……事实上,它可能是一周、一个月或几个小时,这告诉我它不是电子邮件代码,也可能是其他的会话…?我不确定…我看到一年后发送了一封重复的电子邮件…例如,我的收件箱中有三份相同的电子邮件,一份来自周三6:21,周一3:26,周日7:24…虽然,更彻底地阅读了你的评论,这并不能解释周/月延迟,只有几秒钟。是的,仍然没有运气…似乎没有o这是这种行为的逻辑原因…检查电子邮件的标题。通常,您会在其中看到一个唯一的ID。例如:
消息ID:
重复的ID是相同的还是不同的ID?如果相同,则听起来像传输层或电子邮件服务器本身中的某个东西。如果不同,则会提示它是客户端的东西。至少这会帮助你分而治之。