前提:公司同事离职,我接手同事负责的项目。

事件:某天公司的分析人员,说软件中的邮件发送功能不能使用,总是提示“邮件发送失败”。

本地能够正常发送,发布WCF到服务器IIS上,再调用WCF发现就提示“发送失败”,有没有什么特别的提示。服务器是Server 2008 R2系统,我本机是WIN 7。于是猜测是否是WCF发布的问题,将WCF拷贝到我本地电脑,发现邮件能够正常发送,忽然感觉无比蛋疼!

于是猜测是否是SMTP服务有问题呢?

果断放弃126的邮箱,使用163的邮箱,同时也将邮箱的服务更改为 “smpt。163.com”,本地测试没问题,服务器测试还是发送失败。

尼玛,没办法又试了试QQ邮箱,同样是本地可以,服务器不可以。无奈之下只能使用一个笨的方法,将发送邮件的代码拷贝出来,写了一个测试的DEMO,放在服务器上。

结果发现,163、126、QQ邮箱在发送邮件上都没有问题。就在我百般无奈的时候,发现以前邮件可以发送,赶紧询问同事是否知道问题所在,给同事一说,他说我知道这个问题。内心一阵窃喜,终于要搞定了,就在这时候,他说了一句,我也是发现服务器上有时候是发送失败的,但是没有找到原因,顿时凌乱在了风中。。。

没办法,BUG还未消除,同志仍要努力呀!

又打了N遍LOG发现总是提示数组越界,可是根本就没有越界的地方呀!无奈之下,发现以前有的邮件是可以发送的,仔细分析了一下,猜测是否是邮件中附件的大小会影响发送结果呢?想到这,马上去实验,果然如同我的猜测,小的附件没问题,大的附件有问题。于是想是否是SMTP服务有什么配置,可是百度了N久,都没有什么收获。

就在我准备放弃,翻了N页记录后终于发现了一篇博客,说是微软的BUG,

使用"System.Net.Mail.SmtpClient"类,如果是大于 3 MB 的电子邮件附件发送一封电子邮件,就会报错。

顿时,感动的眼泪哗哗的。

https://support.microsoft.com/zh-cn/kb/2183292

看到这,顿时信心百倍,雄赳赳气昂昂的,准备要搞定这个问题了。点击下载链接,发现已经没有这个修复补丁包了。找不到补丁包,我就猜测是否是.NET Framework 4.5中已经将这个问题给修复了呢,于是我就又在服务器上装了4.5,然并卵啊然并卵。就在这时候我做了一个很愚蠢的工作,把.NET Framework 4.5给卸载了,卸载了.NET Framework 4.5后发现4.0也统统都给卸载了。SHIT!!! 于是又赶紧装上.NET Framework 4.0,重新配置好,结果尼玛果然出大事了,整个系统登录不上去了。

内心非常焦急,怎么办怎么办马上要下班了啊。。。。

冷静下来仔细分析,卸载了.NET Framework 引发的问题,发现系统报错“Unable to find the requested .Net Framework Data Provider”,我数据库用的是Oracle数据库,而且ODAC安装也没问题,卸载后却说找不到,还是得需要上网查寻呀!

http://www.dotblogs.com.tw/yc421206/archive/2014/06/11/145502.aspx

看到这篇文章后,才知道,在安装ODAC的时候会向 Machine.config 中的 DbProviderFactories写入 Oracle.DataAccess.DLL 的信息,找到问题后,复制DbProviderFactories到我的电脑

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config 目录下的Machine.config中。重新打开系统发现能够正常登录,长舒一口气。

可是邮件发送的问题还是没有搞定呢?

继续网上搜索,找到了这个补丁包叫 KB2183292 ,以为直接搜索就能够找到下载的地方,结果我还是太年轻了。根本找不到。

功夫不负有心人啊,终于让我发现了一点点的线索,

https://support.microsoft.com/zh-cn/kb/2468871

在这篇文章中,看到了关于 KB2183292 补丁包的信息,

原来KB2183292 和其他的一些补丁包给合并到一个大的补丁包里了,就是这厮。

安装后,重启服务器,哆哆嗦嗦的测试了一下,竟然成功了。太尼玛的感动了!

在网上查询的时候要有耐心,每条记录都看看,也许就有对自己有用的信息了。再有就是,还是用谷歌吧,我好多东西搜出来的都是因为谷歌,度娘你在干什么。。。。。。

记一次SmtpClient发送邮件引发的系列问题的更多相关文章

  1. 利用System.Net.Mail 的SmtpClient发送邮件

    原文:利用System.Net.Mail 的SmtpClient发送邮件 几个月前总结过关于Jmail发送邮件,当时用Jmail发送邮件发送速度有点慢(可能对Jmail了解不是很多).现在改为用微软提 ...

  2. SmtpClient发送邮件时附件名称乱码

    在用户环境发现一个现象,使用System.Net.Mail.SmtpClient发送邮件,当附件名包含中文且长度较长时,最终的邮件里附件名会乱掉,写个简单的测试程序: var mail = new M ...

  3. .NET 通过SmtpClient发送邮件 提示 4.7.1 service unavailable try again later 解决办法

    最近用C#的SmtpClient发送电子邮件碰到这个错误: 正在处理错误. 服务器响应为:4.7.1 Service unavailable - try again later 换了其他的SMTP服务 ...

  4. C# 使用 SmtpClient 发送邮件注意项

    最近有邮件发送需求,使用 C#  SmtpClient 对象发送邮件 , 报异常, 如下错误代码: 调整代码顺序后,发送邮件成功! 注意:一定要先设置 EnableSsl和UseDefaultCred ...

  5. C#使用SmtpClient发送邮件

    目的:写一个可发送邮件的DLL. 原理: 例如A使用163邮箱发送邮件给B(qq邮箱).首先A会把邮件通过SMTP(Simple Mail Transfer Protocol)协议传输到163的Smt ...

  6. SmtpClient发送邮件

    使用第三方SMTP服务器来发送邮件.如网易: SmtpClient sc = new SmtpClient("smtp.126.com"); sc.Credentials = ne ...

  7. SmtpClient 发送邮件

    利用SmtpClient 代码发送邮件. 简单测试代码: static void Main(string[] args) { MailMessage msg = new MailMessage(); ...

  8. C#使用SmtpClient发送邮件解决授权码配置问题

    授权码,(新版邮箱在开启smtp权限设置时,会生成授权码)如果不做配置,客户端是不能发送邮件的 //指定邮箱账号和密码,需要注意的是,这个密码是你在QQ邮箱设置里开启服务的时候给你的那个授权码 Smt ...

  9. asp.net利用SmtpClient发送邮件

    using System; using System.Data; using System.Web.UI; using System.Data.OracleClient; using DBUtilit ...

随机推荐

  1. (20)python pycharm

    使用GitHub 一·登录GitHub 1. 2. 3. 4. 二. 登录成功后再配置git 1 2.创建项目到github 3.下载github

  2. 解决intellij idea中使用live edit插件不能在chrome即时显示css变化的方法(html可以)

    问题源于一次chrome内核的更新 详细请看 http://src.chromium.org/viewvc/blink/trunk/Source/devtools/protocol.json?revi ...

  3. 【枚举】【贪心】 Codeforces Round #398 (Div. 2) B. The Queue

    卡题意……妈的智障 一个人的服务时间完整包含在整个工作时间以内. 显然,如果有空档的时间,并且能再下班之前完结,那么直接输出即可,显然取最左侧的空档最优. 如果没有的话,就要考虑“挤掉”某个人,就是在 ...

  4. 【差分约束系统】【spfa】UVALive - 4885 - Task

    差分约束系统讲解看这里:http://blog.csdn.net/xuezhongfenfei/article/details/8685313 模板题,不多说.要注意的一点是!!!对于带有within ...

  5. 【博弈论】【SG函数】bzoj1777 [Usaco2010 Hol]rocks 石头木头

    仅有距根节点为奇数距离的节点的石子被移走对答案有贡献,∵即使偶数的石子被移走,迟早会被再移到奇数,而奇数被移走后,不一定能够在移到偶数(到根了). 最多移L个:石子数模(L+1),比较显然,也可以自己 ...

  6. 【bzoj2142】【礼物】拓展Lucas定理+孙子定理

    (上不了p站我要死了,侵权度娘背锅) Description 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量 ...

  7. React Native学习之自定义Navigator

    Navigator还是最常用的组件, 所以自己封装了一个, 使用起来也比较简单, 如下: 首先导入组件 var MLNavigator = require('../Lib/MLNavigator'); ...

  8. Redis编程实践【pub/sub】

    原文:http://shift-alt-ctrl.iteye.com/blog/1867454 Redis或许已经在很多企业开始推广并试水,本文也根据个人的实践,简单描述一下Redis在实际开发过程中 ...

  9. iOS页面跳转及数据传递

    转: http://blog.csdn.net/wang9834664/article/details/8025571 iOS页面跳转: 第一种 [self.navigationController  ...

  10. 关于接口 RandomAccess

    今天看到java.util.Collections这个工具类中的 public static <T> void fill(List<? super T> list, T obj ...