|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。编码|办理|成绩|中文编码
邮件头(拜见RFC822,RFC2047)只能包括US-ASCII字符。邮件头中任何包括非US-ASCII字符的部分必需举行编码,使其只包括US-ASCII字符。以是利用javamail发送中文邮件必需经由编码,不然他人收到你的邮件只能是乱码一堆。不外利用javamail包的办理办法很复杂,用它自带的MimeUtility工具中encode开首的办法(如encodeText)对中文信息举行编码就能够了。
例子:
MimeMessagemimeMsg=newMimeMessage(mailSession);
//让javamail决意用甚么体例来编码,编码内容的字符集是体系字符集mimeMsg.setSubject(MimeUtility.encodeText(Subject));
//利用指定的base64体例编码,并指定编码内容的字符集是gb2312
mimeMsg.setSubject(MimeUtility.encodeText(Subject,”gb2312”,”B”));
一般对邮件头的编码体例有2种,一种是base64体例编码,一种是QP(quoted-printable)体例编码,javamail依据详细情形来选择编码体例。
如“txt测试”编码后内容以下:
=?GBK?Q?Txt=B2=E2=CA=D4
内里有个=?GBK?Q?,GBK暗示的是内容的字符集,?Q?暗示的是以QP体例编码的,前面紧跟的才是编码后的中笔墨符。以是用MimeUtility工具编码后的信息里包括了编码体例的信息。
邮件的注释也要举行编码,但它不克不及用MimeUtility里的办法来编码。邮件注释的编码体例的信息是要放在Content-Transfer-Encoding这个邮件头参数中的,而MimeUtility内里的办法是将编码体例的信息放在编码后的注释内容中。以是假如你对注释也用MimeUtility举行处置,那末其他邮件程序就不会一般显现你编码的邮件,由于其他邮件软件如outlook,foxmail只会依据Content-Transfer-Encoding这个内里的信息来对邮件注释举行解码。
实在,邮件注释部分的编码javamail已主动帮你做了,当你发送邮件的时分,它会本人决意编码体例,并把编码体例的信息放进Content-Transfer-Encoding这个邮件头参数中,然后再发送。以是你所要做的就是间接把邮件注释的内容放进邮件中就能够了。
对邮件注释的编码体例对照多,包含了base64和QP体例,另有一些如7bit,8bit等等,由于javamail主动为邮件注释编码,以是我就纷歧一祥叙了。
例子:
//处置邮件注释
MimeBodyPartmbp=newMimeBodyPart();
if(ContentType()==null||ContentType.equals(""))
mbp.setText(Content);
else
mbp.setContent(Content,Content);
解码
javamail包中的MimeUtility工具中也供应了对邮件信息解码的办法,都是以decode开首的一些办法(如decodeText)
例子:
StringSubject=mimemsg.getSubject();
StringChSubject=MimeUtility.decodeText(Subject);
关于base64和QP编码后信息,decode*办法能将他们准确的解码,可是,假如指定的字符集不合错误,那末javamail就会呈现毛病,不克不及准确地将其解码。
若有的邮件体系将”txt测试”编码后以下:
=?x-unkown?Q?Txt=B2=E2=CA=D4
这里指定的字符集是x-unknown,长短明白的字符集,javamail就不克不及准确的处置了,可是”测试”这两其中笔墨仍是依照gbk字符集编码的,以是你能够手工的将编码体例信息更正确,再用decode*办法来解码。
例子:
if(str.indexOf("=?x-unknown?")>=0){
str=str.replaceAll("x-unknown","gbk");//将编码体例的信息由x-unkown改成gbk
try{
str=MimeUtility.decodeText(str);//再从头解码
}catch(Exceptione1){
returnstr;
}
decode*办法都是依据在编码信息中包括的编码体例的信息来解码,以是decode*办法对邮件注释解码是有效的,由于邮件注释中不包括编码体例的信息。
同编码一样,邮件注释的解码也是由javamail做了。Javamail依据Content-Transfer-Encoding里的信息,来对邮件的注释解码。
客户程序从javamail获得的注释内容字符集为iso-8859-1,以是还要将字符集转换一下,例:
StringCorrectContent=newString(Content.getbytes(“iso-8859-1”),”gb2312”);
CorrentContent为准确的邮件注释了
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。 |
|