ASP.NET网页设计关于OpenSmtp邮件题目太长后呈现乱
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。smtp OpenSmtp是.Net平台上一个不错的邮件发送组件,可是个中存在一些bug影响我们的利用,我在利用中碰到了邮件主题长度较年夜时,邮件呈现乱码的情形。经由反省源代码发明,本来的处置历程存在成绩:起首主题是经由过程ASCII编码的,其次,利用了QP编码,但没有思索主题与内容的区分。
在主题中编码时,每行必需都要独自编码,不成将主题全体编码。
经由与OutlookExpress对照,在MailEncoding类中增添一个办法,专门针对邮件主题举行Base64编码
publicstaticstringConvertHeaderToBase64(strings,stringcharset)
{
intlineLength=40;//每行处置40个字节
Encodingencoding=Encoding.GetEncoding(charset);//取指定编码
byte[]buffer=encoding.GetBytes(s);//转换为字节码
StringBuildersb=newStringBuilder();//保留终极了局
stringlinebase64;
intblock=buffer.Length%lineLength==0?buffer.Length/lineLength:buffer.Length/lineLength+1;
for(inti=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("?=
");
}
sb.Remove(sb.Length-3,3);//删除最初的换行标记
returnsb.ToString();
}
然后,将MailMessage类中的ToString办法中对邮件主题的处置修正为挪用自界说的办法
//sb.Append("Subject:"+MailEncoder.ConvertHeaderToQP(cleanSubject.ToString(),charset)+"
");
sb.Append("Subject:"+MailEncoder.ConvertHeaderToBase64(cleanSubject.ToString(),charset)+"
");
从头编译便可
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么? 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页:
[1]