【发布时间】:2015-02-26 15:56:06
【问题描述】:
当我使用 SmtpClient 发送电子邮件时,我发现了一个奇怪的行为:
- 交付时间过长。
- 已送达两次。
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 电子邮件时,我收到了两次。
【问题讨论】:
-
您没有为
TO和BBC字段使用相同的地址? -
放置断点,去调试。检查你的变量。
-
也许消费代码 invokes 这两次?我很确定 C#
SmtpClient对象本身没有表现出这种行为,现在可能有人已经注意到了。 远更有可能是您正在使用的值(to和bcc? 中的同一电子邮件?)、消费代码(调用两次)或邮件设置本身(一个地址转发到另一个地址?)。 -
我见过两次 .NET 框架的触发方法。您在调试时会遇到这种情况吗?
-
我确定TO和BCC是不同的,client.Send(message);只调用一次。
标签: c# smtpclient