论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp.net教程
Tag:静态页面,treeview,gridview,repeater,dataset,sqldatareader,ado.net,上传,三层,ajax,xml,留言本,新闻发布,商城,注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,触发器,socket,form认证,登录,视频教程

利用OpenSmtp.Net发送需要smtp验证的邮件

文章类别:Asp.net | 发表日期:2008-10-5 22:06:53

1.引言
    下周,需要做一个发送电子邮件的模块,磨刀不误砍柴工,周末在家里先做了一下测试,微软在,net1.1中有System.Web.Mail空间,这个命名空间下可以发送不带smtp验证的电子邮件,不过现在网络上很少再有不需要smtp验证的,所以这个命名空间下的类应该算是比较鸡肋。 于是找到opensmtp.net这个开源项目,这个项目的admin是园子里面的"我得女儿好漂亮",真诚感谢一下。
 2.本文宗旨
    本文并不是介绍openmail.net的使用方法,该开源项目是一个非常正规的项目,它自己具有详细的文档和使用方法。本文主要阐述再使用OpenMail或者.net 2.0里面的SmtpClient的时候可能遇到的问题,这个问题跟你的运行环境有关系,如果你恰巧遇到这样问题的时候,网上相关资料也比较少。我在下面就描述一下我遇到的问题以及归纳出来的解决办法
3、在使用OpenMail或者SmtpClient中可能遇到的问题
   1)在发送电子邮件的时候,提示“您主机中的软件放弃已经建立的连接”
    这个是我遇到的最为头疼的问题,因为他昨天晚上调到12点,搞的我差点没疯掉。起初,我知道一定是防火墙引起的问题,但是我把本地windows xp内置防火墙关闭之后,问题依旧。但是无论我是否关闭防火墙,outlook都能正常接收和发送电子邮件,我用的是smtp.126.com,我直接telnet smtp.126.com 25或者在软件中TcpClient client = new TcpClient("smtp.126.com",25);都提示无法连接。而outlook却能发送邮件,我netstat -n ,本机与smtp.126.com 25端口的tcp连接在outlook发送电子邮件的时候也建立了,但为什么outlook能建立连接,我的软件或者telnet为何不能?如何能让我的软件和telnet能连接smtp 服务器的25端口?
  2)第一个问题着实让我浪费了很多时间,而且浪费了n多脑细胞,不过还好终于解决了,第二个问题是在发送电子邮件的时候,邮件的正文产生乱麻的问题,这个问题我看网上有人在问,不过很好解决。
4.解决问题的步骤和方法,以及经验教训
   1)对于第一个问题,我的确犯了一个方向性的错误,那就是我关闭了本机防火墙之后,我错误的认为导致我不能正常连接smtp服务器的原因在于smtp服务端的防火墙,而且我本地outlook能正常发送邮件极大的误导了我的思路,我错误的任务,outlook能发送,那么表示数据一定能从我本地出去。错误只能出现在服务端,我猜想可能outlook有特殊的技术能穿透smtp服务器的防火墙,但是我查阅了穿透防火墙的技术,如果要防火墙,一般的做法是HttpChannel,其实http请求本身不能穿透防火墙,但是一般防火墙不阻止对80端口的连接,smtp.126.com的80端口确也是关闭的。这样的思路导致我在错误的方向用了很多功。
        今天早晨起来,我决定换个思路看看,我把本地防火墙关掉,还是不行,后来我看到了我的macfee,是不是这厮搞得鬼那,我打开virtusScan Console,o,my god,里面的确有一项On-Delivery E-Mail  Scanner ,我关闭它,发现还是不行,我有点失望了,不过还不甘心,再找,终于又发现了,在Access Protection里面,有一个ports to block,里面有25端口,日志文件保存在"AccessProtectionLog.txt",打开文件后有许多失败记录,去掉25端口阻塞,禁止On-Delivery E-Mail  Scanner ,问题解决
 2) 对于第二个问题,只需要更改编码就可以了,在openmail.net里面设置MailMessage.CharSet,如果在中国,设置"gb2312"一般可以解决这个问题
5.结论
   经过两天的调试和思考,解决的不是一个很大的问题,但是我也从中获得了一个教训,思考问题,一定要灵活,不要太过于固定化,比如我错误的认为是对方防火墙的问题,而且这种思路被我错位的坚持了很久,其实在我们不能很好的解决一个问题的时候,与其费劲脑筋,不如反过来想想。
http://www.cnblogs.com/jillzhang/archive/2007/01/21/626006.html
视频教程列表
文章教程搜索
 
Asp.net推荐教程
Asp.net热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058