立此存照:System.Net.Mail 的 bug
痛苦了debug了一个多钟头,后来终于在网络上找到了这篇“救星”文章:
http://columns.chicken-house.net/blogs/chicken/archive/2007/04/06/system-net-mail-bug.aspx
立此存照,如果您也碰到同样问题,希望能够能比我更幸运些,更早找到问题所在。
症状是:调用 SmtpClient.Send 方法后,出现 System.FormatException,
英文消息为“An invalid character was found in header value.”
中文消息是:“邮件标头中找到无效字符”。
原因是在 SmtpClient.Send 之前曾经调用过该 MailMessage 对象的 From, To, Cc 等字段的 ToString 方法。很有可能的情形是,你尝试在发信前留下日志时,“无意间”调用到了。而微软的工程师在此处出现了一些失误,最终产生了该错误消息,具体情况请参看上面链接中的文章。
P.S. 当然还会有其他原因可能导致此问题,比如微软知识库里给出的一种原因是因为收件人显示名称中包含有引号。