【问题标题】:SmtpClient sends any email twiceSmtpClient 发送两次电子邮件
【发布时间】:2015-02-26 15:56:06
【问题描述】:

当我使用 SmtpClient 发送电子邮件时,我发现了一个奇怪的行为:

  1. 交付时间过长。
  2. 已送达两次。

SmtpClient client = new SmtpClient();
client.Host = "smtpout.secureserver.net";
client.Port = 80;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential(_fromAddress, _password);
MailMessage message = new MailMessage();
message.Body = _body;
message.BodyEncoding = Encoding.UTF8;
message.IsBodyHtml = true;
message.Subject = _subject;
message.To.Add(_toAddress);
message.Bcc.Add(_bccAddress);
message.From = new MailAddress(_fromAddress);
client.Send(message);

更新 1:

我确定 TO 和 BCC 是不同的,并且 client.Send(message);只调用一次。


更新 2:

经过大量调试,我得到以下信息:

  • 当我使用我的 gmail 作为密件抄送地址时,我可以正常接收。但是,当我使用我的 godaddy 电子邮件作为密件抄送地址时,我收到了两次。
  • 当我的代码在我的开发机器上本地运行时,我会立即收到电子邮件。但是当我的代码在 azure 云服务上运行时,发送电子邮件的时间过长(从 5 分钟到 1 小时不等)。

更新 3:

  • 当我在密件抄送地址中使用 godaddy 电子邮件时,我收到了两次。

【问题讨论】:

  • 您没有为TOBBC 字段使用相同的地址?
  • 放置断点,去调试。检查你的变量。
  • 也许消费代码 invokes 这两次?我很确定 C# SmtpClient 对象本身没有表现出这种行为,现在可能有人已经注意到了。 更有可能是您正在使用的值(tobcc? 中的同一电子邮件?)、消费代码(调用两次)或邮件设置本身(一个地址转发到另一个地址?)。
  • 我见过两次 .NET 框架的触发方法。您在调试时会遇到这种情况吗?
  • 我确定TO和BCC是不同的,client.Send(message);只调用一次。

标签: c# smtpclient


【解决方案1】:

最明显的答案是 _toAddress 和 _bccAddress 相同,或者您发送密件抄送的邮箱地址被重定向到另一个地址?

在调试器下验证你没有错误地运行代码两次,这也是可能的。

根据代码示例,它不可能两次发送电子邮件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2015-06-11
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多