或许大家会很失望,为什么.NET的SMTP不支持ESMTP(身份认证),现在哪个SMTP不需要身份认证吖?真郁闷,微软老是喜欢做这种鸡肋。
刚开始要用.NET的SMTP,那已经是2002年的事情了,发现它不支持ESMTP,就干脆改用了jmail,也就是要用InterOp,这种方法虽然的确是比不上纯.NET的,也是权宜之计。
后来因为先是接收部分采用我参与开发的OpenPOP.NET,发现效果不错,就干脆全部采用纯.NET的,发送部分采用OpenSMTP.NET。
最近发现了Reflector这个东西,其反编译效果不错,就是只能逐个函数解,实在是太不爽,后来hBifTs介绍了一个Reflector.FileDisassembler,效果好多了,可惜就是只能逐个Assembly解,它们都是很极端,一个解函数,一个解Assembly,就是不能解Class,看来我得自己写一个插件了。
回到正题,既然有了工具,我就狠了一把,把.NET的整个System都反编译了,其中我最关心的是SMTP的实现,发现它竟然用了CDONTS这个历史遗物!!!连TCP都不用,就光会用那些鸡肋,实在让我失望!!!!
同时,我还发现MIMEMapping类跟我在OpenPOP.NET中实现的方法一模一样,看来该开发人员也不咋地。
而且其邮件编码只有BASE64和UUEncode,连非常常见的Quoted-Printable都没有。
建议大家用OpenSMTP.NET,开源,功能强大,支持目前绝大部分SMTP特性,除了标准的正常发送和任意多附件,还支持如ESMTP(身份认证)、相关类型图片附件、特别好的中文支持等等。