仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 720|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页设计关于OpenSmtp邮件题目太长后呈现乱

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:34:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我感觉可以顶到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)+"
");
从头编译便可
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?
透明 该用户已被删除
沙发
发表于 2015-1-19 17:42:13 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
admin 该用户已被删除
板凳
发表于 2015-1-28 09:18:07 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
乐观 该用户已被删除
地板
发表于 2015-2-5 20:23:48 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
飘灵儿 该用户已被删除
5#
发表于 2015-2-13 13:04:30 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
若天明 该用户已被删除
6#
发表于 2015-3-3 21:29:13 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
小女巫 该用户已被删除
7#
发表于 2015-3-11 13:56:07 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
山那边是海 该用户已被删除
8#
发表于 2015-3-18 21:46:51 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
若相依 该用户已被删除
9#
发表于 2015-3-26 19:20:55 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 17:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表