zoukankan      html  css  js  c++  java
  • 退而求其次解决.NET4.0发送邮件,附件名字过长会导致附件文件名乱码或后缀名变为.BIN

    IDE:Visual Studio 2010[C#] + .NET 4.0框架
    引用.NET 4.0框架的System.Net.Mail命名空间开发发送邮件[附件]
    发现附件文件名长了,就会出现乱码问题
    至于长到什么程度才会乱码,当时不得而知
    百度一下,.net.mail 乱码,只有一条微软MSDN社区的网页标题与乱码的情况描述相吻合
    标题为《.net framework4.0发送邮件,如果附件名字过长会导致附件乱码》,后来又找到一篇微软技术支持的知识库文章[http://support.microsoft.com/kb/2402064/en-us],看样子找到救星了
    逐一对照我是否符合微软技术支持页描述的情形:
    1.You run an application that is compiled for the Microsoft .NET Framework 4.---是的,我运行的应用程序被编译为 Microsoft.NET Framework 4。
    2.The application calls the System.Net.SmtpClient class to send an email message and uses the Attachment class to attach files to a MailMessage object.---是的,应用程序调用System.Net.SmtpClient类发送一封电子邮件,且调用附件类把文件附加在MailMessage对象。
    3.The attachment name contains non-ASCII characters and is longer than 41 UTF-8 encoded bytes.---附件文件名包含非 ASCII 字符,UTF-8编码且长度超过41个字节)。注:UTF-8编码下,1个汉字 = 3个字节。准备对该项进行测试,以确定我遇到的乱码问题是否与微软描述的这三种情形完全吻合。
    于是,我对微软描述的这种情形作了进一步的测试[测试发送方:QQ邮箱、测试接收方:163邮箱]。测试结果发现,UTF-8编码下未超过41个字节的附件文件名,发送后发送方QQ邮箱[已发送]中就会正常显示附件文件名,接收方163邮箱[收件箱]中也会正常显示附件文件名;而UTF-8编码下超过41个字节的附件文件名,发送后发送方QQ邮箱[已发送]中的附件文件名就会显示乱码,接收方163邮箱[收件箱]中会将收到的附件文件名显示为“ATT0004.BIN、ATT0005.BIN”等字样,即解码不正确。将其下载下来把文件后缀名改成之前正确的后缀名,仍无法正常阅读其中的内容。
    这三种情形与微软描述的三种情形完全吻合。这说明,微软已知晓该问题并认为该问题是.NET 4.0框架的一个BUG。
    在微软关于该问题的知识库文章中,RESOLUTION中有修复该问题的Hotfix[Hotfix网页链接:https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31723]。
    下载后,XP下安装该Hotfix被微软告知该Hotfix不适用,安装未成功。想必是系统问题。想到,为了一个Hotfix,不至于重新安装操作系统。因.NET 4.0以下的几个框架也有System.Net.Mail命名空间,故退而求其次,下载安装了.NET 3.5框架,将该程序编译为.NET 3.5框架下的程序。这时,再次发送邮件后,发送方QQ邮箱[已发送]中的附件文件名均可正常显示,没有了乱码情况;而接收方163邮箱[收件箱]中也均可正常显示,不会显示为“ATT0004.BIN、ATT0005.BIN”等字样了。

    当然了,如果系统没问题安装成功上述Hotfix,是最好不过的了。

  • 相关阅读:
    [ Algorithm ] N次方算法 N Square 动态规划解决
    [ Algorithm ] LCS 算法 动态规划解决
    sql server全文索引使用中的小坑
    关于join时显示no join predicate的那点事
    使用scvmm 2012的动态优化管理群集资源
    附加数据库后无法创建发布,error 2812 解决
    浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法
    windows 2012 r2下安装sharepoint 2013错误解决
    sql server 2012 数据引擎任务调度算法解析(下)
    sql server 2012 数据引擎任务调度算法解析(上)
  • 原文地址:https://www.cnblogs.com/sunxin88/p/3603854.html
Copyright © 2011-2022 走看看