如果机器名使用中文,用SmtpClient发邮件就会失败,原因就是EHLO指令不能跟中文。
用Reflector看了下SmtpClient,发现有个字段“localHostName”用来保存机器名的,这就很简单了。
解决方法一、
扩展下SmtpClient,给它加个“LocalHostName”属性,用来取得、设置localHostName的值。
方法二、
利用.NET字符串的一个特性,相同内容的字符串使用同一块内存区域。
定义一个字符串变量,把机器名赋值给改变量,利用这篇文章http://blog.csdn.net/coowoo/archive/2007/01/01/1472053.aspx
讲的方法把该字符串改为纯英文就可解决。