最近用C#的SmtpClient发送电子邮件碰到这个错误:

正在处理错误。 服务器响应为:4.7.1 Service unavailable - try again later

换了其他的SMTP服务器,没有问题,唯独客户使用的这个服务器会报异常。

使用Foxmail也可以正常发送邮件,但是C#写程序,就不能发送。

非常好奇,到底是哪里出了问题。于是下载了Wireshark,跟踪了端口为25的TCP数据包(Filter处填:tcp port 25)。

点击Start开始捕捉数据包。

从图里可以发现这个服务器非常奇葩的会拒绝一次SMTP协议里的MAIL FROM指令,从而造成异常,再试一次就好了。

然而C#的SmtpClient类我们没法更改(System.dll),于是谷歌找到了System.Net.Mail.SmtpClient的mono实现,复制了下来,增加了一次登录时错误451的判断,然后重新发送一次去掉了@和域名的,只保留用户名的MAIL FROM信息,就可以成功发送了。

从Github的SmtpClient源码中,还知道了一个叫做MailKit的开源发送邮件代码,地址是 https://github.com/jstedfast/MailKit

这个功能比SmtpClient强大很多,但是我的程序都已经完成了,就不再花时间去改了,有时间可以再研究这个软件。

GitHub 的System.Net.Mail源码在这里:https://github.com/mono/mono/tree/master/mcs/class/System/System.Net.Mail

.NET 通过SmtpClient发送邮件 提示 4.7.1 service unavailable try again later 解决办法的更多相关文章

  1. 用phpmailer发送邮件提示SMTP Error: Could not connect to SMTP host解决办法

    之前做项目的时候做了一个用phpmailer发送邮件的功能<CI框架结合PHPmailer发送邮件>,昨天步署上线(刚开始用新浪云,嫌贵,换成阿里了),测试的时候,发送邮件却意外报错了.. ...

  2. Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...

  3. 运行WampServer时,提示Exception Exception in module wampmanager.exe at 000F15A0.解决办法

    出现问题:运行WampServer时,提示Exception Exception in module wampmanager.exe at 000F15A0.解决办法 出现问题原因: ①:缺少Visu ...

  4. SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    SQLServer2005+ 附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 我们在用Sql SQLServer2005+附加数据库文件时弹出错误信息如下图的处理办法: 方案一: ...

  5. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:

    关于压缩jar包时提示.没有这个文件或目录的问题以及解决办法: 问题描述: 我在打包jar时,CMD中进入到包的上一层目录. 在命令提示符中输入 提示如下: 从提示中可知没有找到我们想要打包的clas ...

  6. Ubuntu下安装软件提示无法锁定管理目录(/var/lib/dpkg/)的解决办法

    Ubuntu下安装软件提示无法锁定管理目录(/var/lib/dpkg/)的解决办法   在安装软件的时候,有时候提示,无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 这是 ...

  7. [经使用有效]Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法

    sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...

  8. 执行shell脚本时提示bad interpreter:No such file or directory的解决办法

    执行shell脚本时提示bad interpreter:No such file or directory的解决办法 故障现象:在终端直接cd /var正常,在shell脚本中执行则报错.原因是脚本是 ...

  9. phpexcel 导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法

    使用过很多次phpexcel了,有时需要保存文件到磁盘,有时需要浏览器弹出下载.保存到磁盘一半不会出现问题,关键是浏览器弹出保存,经常会发生导出的excel文件无法打开,提示文件格式或文件名无效,文件 ...

随机推荐

  1. mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication解决办法

    mysqlnd是个好东西.不仅可以提高与mysql数据库通信的效率,而且也可以方便的设置一些超时.如,连接超时,查询超时.但是,使用mysqlnd的时候,有个地方需要注意.就是服务端的密码格式不能使用 ...

  2. The identity used to sign the executable is no longer valid.

    昨天运行还好好的,今天Xcode突然报这个错误. 在网上搜索了一番,也没有找到合适的解决办法. 那怎么办呢? 于是我就登陆了Appstore的开发者账号,发现里面的证书都是invalid状态,我想应该 ...

  3. hexo 搭建博客

    使用hexo搭建网站.记录一下. hexo搭建方法: https://wsgzao.github.io/post/hexo-guide/ http://jacob110.github.io/2015/ ...

  4. apache httpclient 4.5 兼容 http https

    String responseContent = ""; try { SSLContextBuilder contextBuilder = new SSLContextBuilde ...

  5. JQuery AJAX: 了解jQuery AJAX

    jQuery AJAX 一.简介1.AJAX是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新.AJAX = 异步 JavaScript 和 XML(Asynchronous ...

  6. 转 awk中RS,ORS,FS,OFS区别与联系

     今天用到awk ofs 看到一篇不错文章 awk中RS,ORS,FS,OFS区别与联系 张映 发表于 2010-12-02 分类目录: shell 标签:awk, FS, OFS, ORS, RS, ...

  7. iOS tableViewCell侧滑改变收藏状态

                 /** * 图片素材 链接: http://pan.baidu.com/s/1mhi1sfQ 密码: w2wq */ #import <UIKit/UIKit.h> ...

  8. InitializingBean afterPropertiesSet

    package org.test.InitializingBean; import org.springframework.context.support.ClassPathXmlApplicatio ...

  9. UICollectionView未充满时也可以滚动

    当数据不多,collectionView.contentSize小于collectionView.frame.size的时候,UICollectionView是不会滚动的 self.Cov.alway ...

  10. 利用DescriptionAttribute实现枚举字符串

    我们知道定义枚举时是不允许带空格等符号的,这样就不利于进行字符串对比.当然可以通过给枚举添加DescriptionAttribute,然后通过fieldinfo读取DescriptionAttribu ...