.NET 通过SmtpClient发送邮件 提示 4.7.1 service unavailable try again later 解决办法
最近用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 解决办法的更多相关文章
- 用phpmailer发送邮件提示SMTP Error: Could not connect to SMTP host解决办法
之前做项目的时候做了一个用phpmailer发送邮件的功能<CI框架结合PHPmailer发送邮件>,昨天步署上线(刚开始用新浪云,嫌贵,换成阿里了),测试的时候,发送邮件却意外报错了.. ...
- Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...
- 运行WampServer时,提示Exception Exception in module wampmanager.exe at 000F15A0.解决办法
出现问题:运行WampServer时,提示Exception Exception in module wampmanager.exe at 000F15A0.解决办法 出现问题原因: ①:缺少Visu ...
- SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
SQLServer2005+ 附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 我们在用Sql SQLServer2005+附加数据库文件时弹出错误信息如下图的处理办法: 方案一: ...
- 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:
关于压缩jar包时提示.没有这个文件或目录的问题以及解决办法: 问题描述: 我在打包jar时,CMD中进入到包的上一层目录. 在命令提示符中输入 提示如下: 从提示中可知没有找到我们想要打包的clas ...
- Ubuntu下安装软件提示无法锁定管理目录(/var/lib/dpkg/)的解决办法
Ubuntu下安装软件提示无法锁定管理目录(/var/lib/dpkg/)的解决办法 在安装软件的时候,有时候提示,无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 这是 ...
- [经使用有效]Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 最近几天从网上找了几个asp.net的登录案例想要研究研究代码,结果在用 Sql Server2005附 ...
- 执行shell脚本时提示bad interpreter:No such file or directory的解决办法
执行shell脚本时提示bad interpreter:No such file or directory的解决办法 故障现象:在终端直接cd /var正常,在shell脚本中执行则报错.原因是脚本是 ...
- phpexcel 导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法
使用过很多次phpexcel了,有时需要保存文件到磁盘,有时需要浏览器弹出下载.保存到磁盘一半不会出现问题,关键是浏览器弹出保存,经常会发生导出的excel文件无法打开,提示文件格式或文件名无效,文件 ...
随机推荐
- 【上手centos】一、前情以及sublime_text_3安装
笔记本自大一入手,只重装过一次系统,从不曾拆机清灰过.读研之后,日常工作与学习都在实验室进行,笔记本一直在宿舍的桌子上落灰,只偶尔打开来看个电影.上周末,心血来潮,把笔记本抱到实验室拆了清灰,以前一直 ...
- undefined reference to `switch_dev_unregister'
编译内核时,使用默认的配置进行编译.出现错误:undefined reference to switch_dev_unregister',undefined reference toswitch_se ...
- net Datable 基本操作
net Datable 基本操作 using System; using System.Collections.Generic; using System.Text; using System.Dat ...
- ie下的onscroll和onresize的优化
ie下的scroll和resize的优化 1.onscroll function scrollEvent(){ //do something... console.log('do something. ...
- iOS Auto Layout
Auto Layout是什么 Auto Layout是一个基于constraint(约束)的布局系统,它根据UI元素之间约束关系来调整UI元素的位置和大小. Auto Layout解决什么问题 更容易 ...
- opengl 3.3 tutorial
http://www.mbsoftworks.sk/index.php?page=tutorials&series=1
- OPENSSL 学习整理-介绍
Openssl目录名以及功能描述 目录名 功能描述 Crypto 存放OpenSSL 所有加密算法源码文件和相关标注如X.509 源码文件,是OpenSSL中最重要的目录,包含了OpenSSL 密码算 ...
- Android --账户注销
参考博客:android如何实现注销功能 Intent logoutIntent=new Intent(SettingActivity.this,LoginActivity.class); //在执行 ...
- 百度地图API 简单示例
百度地图API2.0需要申请AK javascript引用百度地图API 设置地图DIV样式 javascript设置地图DIV 如下图代码: <!DOCTYPE html> <ht ...
- ASP.NET在IE9,IE10,IE11中Form表单身份验证失效问题解决方法
已经研究出解决方案. IE9:在web.config中的forms中增加name=".xCookie"属性即可. IE10或IE11: 在web.config中的forms中增加c ...