网站首页|中心简介|课程详解|师资力量|新闻动态|招生问答|就业广场|在线报名|学员天地|网络学院|在线留言|证书查询
大兴北大青鸟logo
北大青鸟教程网
学院首页|网络安全|操作系统|服务器|数据库|编程开发|组网建网|网络应用|网页设计|办公软件|注册表|黑客攻防
WIN XP  |  WIN 2000/2003  |  LINUX/UNIX  |  TCP/IP  |  IPV6  |  APACHE  |  DHCP  |  SENDMAIL  |  WLAN
局域网  |  广域网  |  综合布线  |  网络存储  |  入侵检测  |  防火墙  |  交换机  |  病毒防治
北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询 北大青鸟大兴中心QQ在线咨询
田老师
李老师
王老师
谈老师
臧老师
   当前位置:北大青鸟主页>网络学院>编程开发>ASP.NET教程>>关于OpenSmtp邮件标题过长后出现乱码问题的解决



 关于OpenSmtp邮件标题过长后出现乱码问题的解决

文章来源:http://www.bdqnht.com/ 文章作者:北大青鸟 发布时间:2007-12-18

OpenSmtp 是 .Net 平台上一个不错的邮件发送组件,但是其中存在一些 bug 影响我们的使用,我在使用中遇到了邮件主题长度较大时,邮件出现乱码的情况。
  
   经过检查源代码发现,原来的处理过程存在问题:首先主题是通过 ASCII 编码的,其次,使用了 QP 编码,但没有考虑主题与内容的区别。
  
   在主题中编码时,每一行必须都要单独编码,不可将主题全部编码。
  
   经过与 Outlook Express 对比,在 MailEncoding 类中增加一个方法,专门针对邮件主题进行 Base64 编码
  
  public static string ConvertHeaderToBase64(string s, string charset)
   {
   int lineLength = 40; // 每行处理 40 个字节
   Encoding encoding = Encoding.GetEncoding( charset ); // 取指定编码
   byte[] buffer = encoding.GetBytes( s ); // 转换为字节码
   StringBuilder sb = new StringBuilder(); // 保存最终结果
   string linebase64 ;
   int block = buffer.Length%lineLength==0?buffer.Length/lineLength:buffer.Length/lineLength + 1; 字串7
   for(int i=0; i< block; i++)
   {
   if( buffer.Length - i*lineLength >=lineLength )
   linebase64 = Convert.ToBase64String( buffer, i*lineLength, lineLength );
   else
   linebase64 = Convert.ToBase64String( buffer, i*lineLength, buffer.Length - i*lineLength);
   sb.Append( "=?" );
   sb.Append( charset );
   sb.Append( "?B?" );
   sb.Append( linebase64 );
   sb.Append( "?=\r\n\t" );
   }
   sb.Remove( sb.Length-3, 3); // 删除最后的换行符号
   return sb.ToString();
   }
  
   然后,将 MailMessage 类中的 ToString 方法中对邮件主题的处理修改为调用自定义的方法
  
  
  // sb.Append("Subject: " + MailEncoder.ConvertHeaderToQP(cleanSubject.ToString(), charset) + "\r\n");

字串8


   sb.Append("Subject: " + MailEncoder.ConvertHeaderToBase64( cleanSubject.ToString(), charset) + "\r\n");
  
   重新编译即可
  
  出处:haogj


  注:本站资源收集均来子互联网,如有侵权请告知,我们将第一时间删除.
  
上一篇:Asp.net把UTF-8编码转换为GB2312编码   下一篇:ASP.NET小技巧:重写ViewState的存储目的地,以提高页面性能

::免费IT讲座::

时间:周六、日 下午14:00
地点:北大青鸟大兴校区
讲座内容:
     1、职业规划篇。
     2、日常实用技术讲座

主讲师:
     高级金牌讲师
 
大兴校区电话:69203100
 马甸校区电话:82011433
 
             免费订座报名

::免费讲座报名::
姓  名:
性  别:
学  历:
Q  Q:
电  话:
我是从:
知道的



北大青鸟|网络工程师|北京北大青鸟
  友情链接:北大青鸟集团 印度APTECH公司 北大青鸟APTECH公司 北京大学 北大青鸟马甸校区 上海北大青鸟 深圳北大青鸟 无锡北大青鸟 厦门北大青鸟 深圳北大青鸟 邵阳北大青鸟 北大青鸟镇江学府 深圳北大青鸟 徐州北大青鸟
中心图片
中心外景 前台接待区 网络教学区 路由及交换设备 机房环境 项目实践 职业规划师为同学解惑 学员积极回答问题 学员合影 学生宿舍 全国十佳中心奖杯 全国十佳中心奖牌 杰出贡献中心奖杯
  网站地图 | 联系我们 | 诚聘英才 | 在线留言 | 加入收藏 | 设为首页
 

版权所有 © 2004-2008 北京网络时尚信息技术有限公司
北大青鸟双合华腾网络工程师培训中心
大兴校区:大兴黄村长途汽车站东北角
招生热线:010-69203100/01 邮政编码:102600
马甸校区:北三环中路马甸桥东北角商房大厦(国美电器)626
招生热线:010-82011433/32 邮政编码:100029

网络工程师培训 网络工程师 北大青鸟培训 北大青鸟培训中心 网络培训
北大青鸟 北大青鸟网络工程师 北京北大青鸟 电脑培训 计算机培训
北大青鸟图标