/**
* 得到消息中的内容信息
* @param path 附件保存的路径
* @param path2 当前URL
* @param eventtype 如果eventtype=1,不显示附件
* @return 返回内容信息
*/
//调用此方法前,要调用MailAccept.getMessageArray()方法得到message
public String getMailContent(String path,String path2,int eventtype) {
String s = "";
String sct = "";
this.path = path; //得到附件保存的路径
this.path2 = strdata.indexStr(path2,"/",8); //得到当前URL
this.eventtype = eventtype;
try {
Object o = message.getContent(); //返回所有消息内容
sct = message.getContentType(); //返回ContentType信息
if (message.isMimeType("text/plain")||message.isMimeType("text/html")||sct==null) {
//判断ContentType中是否为GB2312或GBK编码
if (strdata.regionStr(sct,"GB2312")||strdata.regionStr(sct,"gb2312")||strdata.regionStr(sct,"GBK")||strdata.regionStr(sct,"GB2312_CHARSET")) {
s = "<pre>"+(String)o+"</pre>";
coding = "GB2312";
}
//判断ContentType中是否为big5编码
else if (strdata.regionStr(sct,"big5")||strdata.regionStr(sct,"Big5")) {
s = "<pre>"+strdata.getstrTobig((String)o)+"</pre>";
coding = "Big5";
}
//如果没有就调用str类中的getstr进行编码转换
else
s = "<pre>"+strdata.getstr((String)o)+"</pre>";
return s;
}
//判断消息中是否有multipart/*头,如果有就进入Multipart处理
if (message.isMimeType("multipart/*")) {
Multipart mp = (Multipart)o;
int cnt = mp.getCount();
for (int j = 0; j < cnt; j++) {
s="<br>"+getPart(mp.getBodyPart(j),j,2,eventtype);
}
}
}
catch(MessagingException e ) {
System.err.println("MailContent.getMailContent(): " + e.toString());
}
catch(Exception e) {
System.err.println("MailContent.getMailContent(): " + e.toString());
}
return s;
}
* 得到消息中的内容信息
* @param path 附件保存的路径
* @param path2 当前URL
* @param eventtype 如果eventtype=1,不显示附件
* @return 返回内容信息
*/
//调用此方法前,要调用MailAccept.getMessageArray()方法得到message
public String getMailContent(String path,String path2,int eventtype) {
String s = "";
String sct = "";
this.path = path; //得到附件保存的路径
this.path2 = strdata.indexStr(path2,"/",8); //得到当前URL
this.eventtype = eventtype;
try {
Object o = message.getContent(); //返回所有消息内容
sct = message.getContentType(); //返回ContentType信息
if (message.isMimeType("text/plain")||message.isMimeType("text/html")||sct==null) {
//判断ContentType中是否为GB2312或GBK编码
if (strdata.regionStr(sct,"GB2312")||strdata.regionStr(sct,"gb2312")||strdata.regionStr(sct,"GBK")||strdata.regionStr(sct,"GB2312_CHARSET")) {
s = "<pre>"+(String)o+"</pre>";
coding = "GB2312";
}
//判断ContentType中是否为big5编码
else if (strdata.regionStr(sct,"big5")||strdata.regionStr(sct,"Big5")) {
s = "<pre>"+strdata.getstrTobig((String)o)+"</pre>";
coding = "Big5";
}
//如果没有就调用str类中的getstr进行编码转换
else
s = "<pre>"+strdata.getstr((String)o)+"</pre>";
return s;
}
//判断消息中是否有multipart/*头,如果有就进入Multipart处理
if (message.isMimeType("multipart/*")) {
Multipart mp = (Multipart)o;
int cnt = mp.getCount();
for (int j = 0; j < cnt; j++) {
s="<br>"+getPart(mp.getBodyPart(j),j,2,eventtype);
}
}
}
catch(MessagingException e ) {
System.err.println("MailContent.getMailContent(): " + e.toString());
}
catch(Exception e) {
System.err.println("MailContent.getMailContent(): " + e.toString());
}
return s;
}
private String getPart(Part part, int partNum,int msgNum,int eventtype) throws MessagingException,IOException {
String s="";
String s2="";
String s5="";
String sct = part.getContentType();//返回multipart/*头下的所有内容
boolean blnnum = true;
if (sct == null) {
s="无效";
return s;
}
ContentType ct = new ContentType(sct); //进行头处理
if (ct.match("text/plain") || ct.match("text/html")) {
//判断ContentType中是否为GB2312或GBK编码
if (strdata.regionStr(sct,"GB2312")||strdata.regionStr(sct,"gb2312")||strdata.regionStr(sct,"GBK")||strdata.regionStr(sct,"iso-gb2312")) {
s1 = "<pre>"+(String)part.getContent()+"</pre>";
coding = "GB2312";
}
//判断ContentType中是否为big5编码
else if (strdata.regionStr(sct,"big5")||strdata.regionStr(sct,"Big5")) {
s1 = "<pre>"+strdata.getstrTobig((String)part.getContent())+"</pre>";
coding = "Big5";
}
//如果没有就调用str类中的getstr进行编码转换
else s1 = "<pre>"+strdata.getstr((String)part.getContent())+"</pre>";
}
//如果multipart/*头中还有multipart/alternative头就进行处理
if(part.isMimeType("multipart/*")) {
String s6="";
Multipart mp = (Multipart)part.getContent();
int count = mp.getCount();
for (int i = 0; i < count; i++) {
if(mp.getBodyPart(i).isMimeType("text/plain") || mp.getBodyPart(i).isMimeType("text/html")||mp.getBodyPart(i).isMimeType("multipart/*"))
s5=getPart(mp.getBodyPart(i),i,3,eventtype);
}
return s5;
}
//对附件进行处理
if (blnAttachment(part)) {
if (eventtype==1) return s1; //不显示附件
s3 = "附件:" + getMailAttachment(part) + "<br>" + s3; //得到附件名和下载链接
}
s = s1+s3;
return s;
}
public String getPlainText() {
int size = v.size();
for(int i = 0; i < size; i++) {
Part p = (Part)v.get(i);
try {
if(p.isMimeType("text/plain")) {
Object o = p.getContent();
return (String)o;
}
} catch(Exception e) {
e.printStackTrace();
}
}
return null;
}我得到如下异常:
java.io.UnsupportedEncodingException: gbk at sun.io.Converters.getConverterClass(Converters.java:114) at sun.io.Converters.newConverter(Converters.java:145) at sun.io.ByteToCharConverter.getConverter(ByteToCharConverter.java:64) at sun.nio.cs.StreamDecoder$ConverterSD.<init>(StreamDecoder.java:220) at sun.nio.cs.StreamDecoder$ConverterSD.<init>(StreamDecoder.java:206) at sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:74) at java.io.InputStreamReader.<init>(InputStreamReader.java:83) at com.sun.mail.handlers.text_plain.getContent(text_plain.java:65) at javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:755) at javax.activation.DataHandler.getContent(DataHandler.java:511) at javax.mail.internet.MimeBodyPart.getContent(MimeBodyPart.java:531) at mail.MailMessage.getPlainText(MailMessage.java:203) at mail.MailMessage.main(MailMessage.java:340)怎么getContent()不能解gbk的编码?应该怎么解决?
public String getPlainText() {
int size = v.size();
for(int i = 0; i < size; i++) {
Part p = (Part)v.get(i);
try {
if(p.isMimeType("text/plain")) {
InputStream in = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in),"gbk");
String line;
StringBuffer sb = new StringBuffer();
While((line = br.readLine())!=null)
sb.append(line);
return sb.toString();
}
} catch(Exception e) {
e.printStackTrace();
}
}
return null;
}
int size = v.size();
for(int i = 0; i < size; i++) {
Part p = (Part)v.get(i);
try {
if(p.isMimeType("text/plain")) {
InputStream in = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in,"gb2312"));
String line;
StringBuffer sb = new StringBuffer();
While((line = br.readLine())!=null)
sb.append(line);
return sb.toString();
}
} catch(Exception e) {
e.printStackTrace();
}
}
return null;
}就可以读出来了,谢谢。javamail不支持gbk编码啊