首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 利用OpenSmtp.Net发送需要smtp验证的邮件
【标  题】:利用OpenSmtp.Net发送需要smtp验证的邮件
【关键字】:OpenSmtp.Net,smtp
【来  源】:http://www.cnblogs.com/jillzhang/archive/2007/01/21/626006.html

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

利用OpenSmtp.Net发送需要smtp验证的邮件 - jillzhang得专栏 - 博客园

jillzhang得专栏

在按照我的理解方式审查了软件开发的生命周期后,我得出一个结论:实际上满足工程设计标准的惟一软件文档,就是源代码清单

博客园 首页 新随笔 联系 聚合 管理
  89 Posts :: 0 Stories :: 636 Comments :: 2 Trackbacks

  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.结论
   经过两天的调试和思考,解决的不是一个很大的问题,但是我也从中获得了一个教训,思考问题,一定要灵活,不要太过于固定化,比如我错误的认为是对方防火墙的问题,而且这种思路被我错位的坚持了很久,其实在我们不能很好的解决一个问题的时候,与其费劲脑筋,不如反过来想想。
附:openmail.dll/Files/jillzhang/OpenSmtp.rar
        Telnet到端口25以测试SMTP通信

posted on 2007-01-21 11:42 jillzhang 阅读(958) 评论(9)  编辑 收藏 引用 网摘 所属分类: Asp.Net
网络蜘蛛(crawlers) ,SEO,网络公关等相关资源与工具的收集与整理:【上一篇】
WAP(wml)开发问答(转):【下一篇】
【相关文章】
  • Send Email from SMTP Adapter via a Dynamic Port in BizTalk Server
  • 常用邮箱POP,SMTP服务器列表
  • 什么是POP3和SMTP?
  • 再说SMTP服务及连结过程
  • SMTP命令详解
  • Postfix+ Courier-imap+Smtp的安装配置(Gentoo)
  • Rhel AS4 server sendmail配置,带SMTP认证
  • 用SmtpClient发送电子邮件
  • 使用ActionMailer发送邮件(smtp方式)
  • yahoo邮箱的outlook,foxmail的pop,smtp设置
  • 【随机文章】
  • Direct3D学习笔记
  • Vmware下成功编译linux内核2.6
  • 导入表内注入代码(一)
  • 泛型类的非静态内部类可访问外围类的类型参数
  • Microsoft SQL Server Spatial project
  • 本体开发导论——A Introduction to Ontology Development
  • 利用JavaScript实现时间段的查询
  • 连接SQLserver数据库注意事项
  • 转码函数
  • AJAX 非宣传性简介
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.