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通信

利用OpenSmtp.Net发送需要smtp验证的邮件相关推荐

  1. 利用阿里大鱼发送短信验证

    用了很久的CSDN,也从中学到了很多的知识和解决很多问题,今天决定自己也要学会贡献,所以从今天开始我的CSDN博客知识加油站.吐舌头 闲话不多说,言归正传.今天我要分享的是利用阿里大鱼实现网站和APP ...

  2. dz邮箱验证怎么设置_详细步骤!Discuz如何设置通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)实现论坛邮箱验证功能...

    论坛如何实现邮箱功能呢?今天研究了半天,最终终于成功了. 在网上找了一堆资料也没有一个靠谱的资料,所以在这里记录下我的步骤和方法,希望可以给其他小伙伴一点参考和帮助. 实现思路: 通过注册腾讯企业邮箱 ...

  3. 【SMTP测试】windows环境利用cmd命令发送smtp协议邮件

    一.windows开启telnet服务 windows默认没有打开telnet服务,需要手动打开,步骤如下 操作步骤: 1)进入控制面板 2)点击程序,打开"程序和功能"下的&qu ...

  4. php如何实现发送qq邮箱验证,php在windows下发送邮件实现

    一.使用PHP内置的mail()函数 看了一下手册,就直接开始写代码了,如下: $to = "test@126.com"; //收件人 $subject = "Test& ...

  5. java发送邮件354_基于SMTP的JAVA邮件发送程序

    这个程序没有使用JavaMail API,而是根据SMTP协议的要求直接处理协议的细节发送邮件,虽然比较麻烦了一些,但是对了解邮件协议的细节很有帮助的. 本文分两部分,第一部分是SMTP命令介绍(这个 ...

  6. Domino下启用SMTP验证及创建允许匿名验证

    我们都知道,作为一个企业的管理员是一件很爽的事,为什么爽呢,那是因为企业管理员的权限很大,所有用户的数据对于管理员来说是透明的,同时也是一件让人感受压力的一件事,那为什么这么说呢,就拿邮件来说吧,很多 ...

  7. 支持ESMTP身份验证的邮件发送

    使用.NET Framework下的System.Net.Mail.SmtpClient可以很容易的实现邮件发送,但现在很多邮件服务器已经支持ESMTP协议.而ESMTP最大的区别在于发送时需要提供帐 ...

  8. 邮件的发送和接收过程-----简单邮件传输协议(SMTP)和邮件读取协议!!!

    图中就是电子邮件的系统结构 以用户A向用户B发送邮件为例 用户A向用户B发送邮件,首先用户A利用由用户代理撰写邮件,包括填写收件人邮箱地址等,然后基于SMTP将邮件发送到其注册的邮箱服务器A的外出邮件 ...

  9. 在 Laravel 5.1 中使用SMTP驱动实现邮件发送(含附件和图片)详细教程

    0. 步骤一:使我们的QQ邮箱能够发送邮件 这里怎么说能够发送邮件呢?其实我们的邮箱都是可以发送邮件的,但是要实现在我们的网站中发送邮件,那就要设置一下我们的QQ邮箱了,因为此时我们的网站现在是作为一 ...

最新文章

  1. ICPC 2005 hangzhou Generator (UVA1358)KMP + 期望DP / 高斯消元
  2. Ubuntu下 安装 window 虚拟机
  3. java.util.timezone_java.util.TimeZone.getTimeZone()
  4. 关于烂代码的那些事——什么是好代码
  5. python if elif else_python:通讯录(字典+while+if/else)
  6. 电子设计大赛作品_第十四届电子设计大赛圆满结束!
  7. json java 数据类型_程序员都应该了解的一种数据格式之 JSON
  8. 贾跃亭又造假,250亿灰飞烟灭!
  9. 创建font_使用CSS3 CubicBezier创建动画链接悬停效果
  10. Ox2ac是C语言常量,计算机等级考试二级C++语言程序设计标准预测试卷二
  11. DSP实验报告—实验1
  12. 快速查看本机公网IP地址
  13. php cunstruct,南开大学海外大学生物学类教授一览
  14. NOIP2021题解~持续更新
  15. hdfs文件系统和linux文件系统,分布式文件系统HADOOP HDFS与传统文件系统LINUX FS的比较与分析...
  16. SQL数据库的一些基本操作
  17. 【C语言入门】SDUT《程序设计基础I 》实验2-选择结构程序设计题解 c语言语法讲解
  18. .net 可选择的转型路径
  19. 图解 JavaScript 对象
  20. 阿里云国际版回执消息简介与配置流程

热门文章

  1. 菜鸟进阶必修课-主板插线小百科(图)
  2. SQL Server 2005数据库快照
  3. 【补充一则】身份证校验的c#代码
  4. 弹出无边框网页的Javscrpt代码
  5. 手动实现bind函数(附MDN提供的Polyfill方案解析)
  6. IT网络通信大变革时代来临 2016中国极客大奖为您找到风向标
  7. 高性能apache服务器配置大并发教程MPM模块配置
  8. javaweb基础 02--javaweb基础概念
  9. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3
  10. Rman--状态管理命令