Asp.net MailAddressCollection.Add()有时会阻塞句点

Asp.net MailAddressCollection.Add()有时会阻塞句点,asp.net,.net,integration-testing,Asp.net,.net,Integration Testing,我们在生产代码中遇到了一个错误,其中电子邮件地址显示名称没有正确引用。这有效地演示了中断的代码: var recipients = new MailAddressCollection(); var address = "Mr. Smith <mr.smith@example.com>"; recipients.Add(address); 但在测试中,不会抛出异常。我们的SMTP抽象被正确调用 为什么在测试期间/在IIS上下文之外,格式问题不会引发异常? 附录:我们意识到我们的服务

我们在生产代码中遇到了一个错误,其中电子邮件地址显示名称没有正确引用。这有效地演示了中断的代码:

var recipients = new MailAddressCollection();
var address = "Mr. Smith <mr.smith@example.com>";
recipients.Add(address);
但在测试中,不会抛出异常。我们的SMTP抽象被正确调用

为什么在测试期间/在IIS上下文之外,格式问题不会引发异常?


附录:我们意识到我们的服务器仍然在.NET 3.5上,而测试项目编译成.NET 4.0

是否有证据表明该方法的3.5版本已被破坏?(或“不同”)


后台故事,供你消遣:报告了一个bug,其中姓名中有句点的用户没有收到任何电子邮件(密码重置、新产品通知等)。我们最初的假设是,这个电子邮件地址解析步骤需要额外的转义或引用。所以,我的努力集中在增加一些测试来证明这一点;但是,他们证明了相反的事实:他们证明逃跑没有什么区别

在一天多的测试中不断添加测试,以找到添加名称的句点的重要性之后,我请其他几个开发人员来帮助我——其中一个开发人员出色地实现了修复,不管测试显示了什么,而且它似乎起到了作用


我们仍然不知道为什么相关测试没有正确地失败。

您确定不是邮件服务器在地址格式上犹豫不决吗?我想我从来没有做过你的工作。我只是在调试和非调试的控制台应用程序中尝试了它,但无法再现格式异常。如果
MailAddressCollection
知道邮件服务器(从web.config?),则可能是。但是,正在
收件人上引发格式异常。添加(地址)
。当我们引用显示名称部分时,它就消失了。通过查看MailAddressCollection源代码可能会有所帮助。具体来说,您可能希望查看MSDN上的文档,其中明确说明它引发异常:看起来它是通过
Add()
通过
ParseAddress()
方法出现的?
var address = "\"Mr. Smith\" <mr.smith@example.com>";