记一次SmtpClient发送邮件引发的系列问题
前提:公司同事离职,我接手同事负责的项目。
事件:某天公司的分析人员,说软件中的邮件发送功能不能使用,总是提示“邮件发送失败”。
本地能够正常发送,发布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发送邮件引发的系列问题的更多相关文章
- 利用System.Net.Mail 的SmtpClient发送邮件
原文:利用System.Net.Mail 的SmtpClient发送邮件 几个月前总结过关于Jmail发送邮件,当时用Jmail发送邮件发送速度有点慢(可能对Jmail了解不是很多).现在改为用微软提 ...
- SmtpClient发送邮件时附件名称乱码
在用户环境发现一个现象,使用System.Net.Mail.SmtpClient发送邮件,当附件名包含中文且长度较长时,最终的邮件里附件名会乱掉,写个简单的测试程序: var mail = new M ...
- .NET 通过SmtpClient发送邮件 提示 4.7.1 service unavailable try again later 解决办法
最近用C#的SmtpClient发送电子邮件碰到这个错误: 正在处理错误. 服务器响应为:4.7.1 Service unavailable - try again later 换了其他的SMTP服务 ...
- C# 使用 SmtpClient 发送邮件注意项
最近有邮件发送需求,使用 C# SmtpClient 对象发送邮件 , 报异常, 如下错误代码: 调整代码顺序后,发送邮件成功! 注意:一定要先设置 EnableSsl和UseDefaultCred ...
- C#使用SmtpClient发送邮件
目的:写一个可发送邮件的DLL. 原理: 例如A使用163邮箱发送邮件给B(qq邮箱).首先A会把邮件通过SMTP(Simple Mail Transfer Protocol)协议传输到163的Smt ...
- SmtpClient发送邮件
使用第三方SMTP服务器来发送邮件.如网易: SmtpClient sc = new SmtpClient("smtp.126.com"); sc.Credentials = ne ...
- SmtpClient 发送邮件
利用SmtpClient 代码发送邮件. 简单测试代码: static void Main(string[] args) { MailMessage msg = new MailMessage(); ...
- C#使用SmtpClient发送邮件解决授权码配置问题
授权码,(新版邮箱在开启smtp权限设置时,会生成授权码)如果不做配置,客户端是不能发送邮件的 //指定邮箱账号和密码,需要注意的是,这个密码是你在QQ邮箱设置里开启服务的时候给你的那个授权码 Smt ...
- asp.net利用SmtpClient发送邮件
using System; using System.Data; using System.Web.UI; using System.Data.OracleClient; using DBUtilit ...
随机推荐
- Codeforces 608 A. Saitama Destroys Hotel
A. Saitama Destroys Hotel time limit per test 1 second memory limit per test 256 megabytes input ...
- HBASE启动失败,Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster
Master日志错误:2015-12-02 06:34:32,394 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.R ...
- 模板—字符串—Manacher
模板—字符串—Manacher Code: #include <cstdio> #include <cstring> #include <algorithm> us ...
- Lambda演算(二)归约!归约!归约!
(一) 这里先不列出λ项的正式定义,只记住λ表达式语义上的构造方式为: x 一个单独的变量名是一个λ项表达式: (λx.M) 该λ表示一个函数.其中 M 是这个函数的函数体,M 本身也是一个 λ项. ...
- 14、Flask实战第14天:Flask使用SQLAlchemy
flask-sqlalchemy使用详解 之前我们用到的SQLAchemy是可以单独使用的,不需要用到Flask 如果我们在Flask框架中使用SQLAchemy,可以使用flask_sqlalche ...
- ASP.NET Core 2.2 基础知识(十八) 托管和部署 概述
为了方便演示,以 .NET Core 控制台应用程序讲解. 我们新建一个控制台应用程序,安装 "Newtonsoft.Json" Nuget 包,然后右键点击该项目,选择" ...
- [BZOJ 1805] Sail 船帆
Link: BZOJ 1805 传送门 Solution: 一道思路比较巧的线段树的题目 首先可以发现,答案和顺序是没有关系的,都是$\sum_{i=1}^n {H_i∗(H_i−1)/2}$. 那么 ...
- [APIO2015]巴厘岛的雕塑
题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 NN 座雕塑,为方便起见,我们把这些雕塑从 11 到 NN 连续地进行标号,其中第 ii 座雕塑的年龄是 Y ...
- POJ 3180 The Cow Prom(SCC)
[题目链接] http://poj.org/problem?id=3180 [题目大意] N头牛,M条有向绳子,能组成几个歌舞团?要求顺时针逆时针都能带动舞团内所有牛. [题解] 等价于求点数大于1的 ...
- 【对询问分块】【主席树】bzoj2683 简单题
对操作序列分块,每S次暴力重建主席树. 当S=sqrt(n*log(n))时,复杂度为O(m*sqrt(n*log(n))). 在线的. #include<cstdio> #include ...