当我使用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作为BCC地址时,我正常收到邮件。但是当我使用我的godaddy电子邮件作为BCC地址时,我会收到两次。
- 当我的代码在本地开发机上运行时,我可以立即收到邮件。但是当我的代码在Azure云服务上运行时,邮件需要很长时间才能被送达(从5分钟到1小时)。
更新3:
- 当我在BCC地址中使用godaddy电子邮件时,我会收到两次邮件。
SmtpClient
对象本身不会表现出这种行为,否则早就有人注意到了。更有可能的是问题要么在于您使用的值(to
和bcc
中相同的电子邮件?),要么在于消费代码(调用两次),要么在于邮件设置本身(一个地址转发到另一个地址?)。 - David