SmtpClient的一个bug

看到有人在问有关SmtpClient的问题,突然想起以前发现的SmtpClient的一个bug,似乎在网上也没搜到过。

System.Net.Mail.SmtpClient是.Net2.0自带的smtp邮件类,相信很多人在用SmtpClient的时候会遇到过“System.FormatException: 在邮件标头中找到无效的字符”这个异常。这个异常很多情况下都会发生,从提示信息看是邮件地址、标题等不符合规范造成的,但我碰到的情况却是SmtpClient的一个bug:如果计算机名中含有中文的话,使用SmtpClient发送邮件就会抛这个异常。

原因是SmtpClient使用了计算机名作为smtp协议中HELO命令的参数,而在发送命令时又会对字符进行检查,若是非法字符则会抛出异常,很不幸中文字符都包括在内。这算不算是歧视中国人民呢?囧

如果在确保邮件格式正确的情况下还抛“在邮件标头中找到无效的字符”异常,或者在一台电脑上正常另一台机子上却抛该异常的话,检查下计算机名是否是中文的。希望能帮遇到同样问题的人少绕些圈子。

PS:另外还有人发现了SmtpClient出现类似现象的另一个bug:http://columns.chicken-house.net/post/e58e9fe4be86-SystemNetMail-e4b99fe69c83e69c89-Bug-.aspx,开发SmtpClient的家伙也真有点二的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值