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. 腾讯云CMQ消息队列在Windows环境下的使用
  2. 开发的AI程序员“抄”代码,被骂惨的GitHub到底冤不冤?
  3. 《走进SAP(第2版)》——2.8 SAP的目标是什么
  4. 西雅图治安_数据科学家对西雅图住宿业务的分析
  5. stm32按键输入实验c语言,stm32f103学习笔记(三)按键输入(IO口输入)
  6. TensorFlow tf.keras.layers.GlobalAveragePooling1D
  7. linux查看接口的命令,linux shell命令查看接口索引--ip link show
  8. linux系统进去dev sdb6,linux书上划的题的答案
  9. 实对称矩阵的特征值求法_MIT—微分方程与线性代数笔记6.5 对称矩阵,实特征值,正交特征向量...
  10. SSM项目实战——图书管理系统
  11. 多元线性模型的分位数回归
  12. 2019开源BI软件排行榜
  13. 为精简版VS2008添加DEBUG版运行时库到系统目录
  14. 与电影同行的日子(同步更新)
  15. win10的安装与优化
  16. mysql中information_schema数据库
  17. A计划:基础架构软件创业之道分享实录
  18. Undetected
  19. 面向对象基础任务训练分享
  20. 信用卡透支忘还钱怎么办?

热门文章

  1. Deep learning:十(PCA和whitening)
  2. (三)SpringMVC实现
  3. VMWARE虚拟机中CentOs7网络连接
  4. 【401天】跃迁之路——程序员高效学习方法论探索系列(实验阶段158-2018.03.13)...
  5. JavaScript iterator 设计模式
  6. 高效率测试之巧用策略模式 (引用)
  7. count(1)、count(*)、count(字段)的区别
  8. Java1.7ConcurrentHashMap类源码解析
  9. kindeditor图片服务器php,kindeditor 粘贴网络图片保存到服务器
  10. python 验证码识别 阿里云_python3调用阿里云图像识别OCR-实现验证码识别