JavaMail问题 文档中心有文章.自己去看 ------------------------------------------------------ 我们还年轻牛奶会有的奶牛也会有的 可天天在 csdn 混这些会有吗 ?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我要哭了.找遍了文章中心的所有关于JavaMail的文章.都没有说到这方面的内内容.哪位大虾能在此指点一下了!万分感激! 问题解决了.看了蔡学镛先生的一片文章<<Java 繁体中文处理完全攻略>>,从其中的一段话得到启示."InputStream/OutputStream 会原封不动地传送资料,但是 Reader/Writer 会将资料当作文字对待,所以 Reader/Writer 在「必要时」会把(文字)资料转码。"问题的原因就是Reader/Writer对资料进行了转码.修改后的代码如下://////处理附件//////String[] fileName=null;InputStream[] inputStream=null;Object o=themessage[number].getContent();//当Message对象含有附件时,其内容会以Multipart的形式存在if(o instanceof String){ //不含附件}else if(o instanceof Multipart){ //可能含有附件 //以Multipart的getBodyPart方法取得内容部分,并以getDisposition方法取得邮件的配置 Multipart mp =(Multipart)o; fileName=new String[mp.getCount()]; inputStream=new InputStream[mp.getCount()]; for(int i=0,n=mp.getCount();i<n;i++) { Part part=mp.getBodyPart(i); if(i==0) {Content=part.getContent().toString();} String disposition =part.getDisposition(); //判断Multipart中是否含有附件的方法.则是依据getDisposition所返回的内容 if((disposition !=null)&&(disposition.equals(Part.ATTACHMENT)||disposition.equals(Part.INLINE))) { fileName[i]=part.getFileName(); System.out.println(fileName[i]); fileName[i]=fileName[i].valueOf(i)+fileName[i].substring(fileName[i].indexOf("."),fileName[i].length()); System.out.println(fileName[i]); inputStream[i]=part.getInputStream(); System.out.println(inputStream[i].toString()); String pathName="D:\\Online\\defaultroot\\mail\\附件\\"; File file=new File(pathName + fileName[i]); FileOutputStream outfile=new FileOutputStream(file); BufferedInputStream br=new BufferedInputStream(inputStream[i]); BufferedOutputStream bw=new BufferedOutputStream(outfile); int b; while((b=br.read())!=-1) { bw.write(b); } bw.flush(); outfile.close(); } }} j2ee开发中的乱码问题 Cookie set值以后 不能马上得到值 why? 关于spring中aop为何意 Struts2使用TOKEN 如何在web.xml设置很多mapping并在jsp中取出值来?100 tomcat 6.0 启动问题 请问JBOSS4里的jms的queue或topic里如何设置只给专门的角色去访问这个queue或topic DAO和ActiveRecord是什么概念,两者有什么联系? 在JAVA中是否可以调用PB写的DLL 请问有关ejb的jndi的问题,敬请指点! applet程序不能再网页上面运行??? java中如何实现对多数据库的支持?谢谢了!
找遍了文章中心的所有关于JavaMail的文章.都没有说到这方面的内内容.
哪位大虾能在此指点一下了!
万分感激!
"InputStream/OutputStream 会原封不动地传送资料,但是 Reader/Writer 会将资料当作文字对待,所以 Reader/Writer 在「必要时」会把(文字)资料转码。"
问题的原因就是Reader/Writer对资料进行了转码.修改后的代码如下:
//////处理附件//////
String[] fileName=null;
InputStream[] inputStream=null;
Object o=themessage[number].getContent();//当Message对象含有附件时,其内容会以Multipart的形式存在
if(o instanceof String)
{
//不含附件
}
else if(o instanceof Multipart)
{
//可能含有附件
//以Multipart的getBodyPart方法取得内容部分,并以getDisposition方法取得邮件的配置
Multipart mp =(Multipart)o;
fileName=new String[mp.getCount()];
inputStream=new InputStream[mp.getCount()];
for(int i=0,n=mp.getCount();i<n;i++)
{
Part part=mp.getBodyPart(i);
if(i==0)
{Content=part.getContent().toString();}
String disposition =part.getDisposition();
//判断Multipart中是否含有附件的方法.则是依据getDisposition所返回的内容
if((disposition !=null)&&(disposition.equals(Part.ATTACHMENT)||disposition.equals(Part.INLINE)))
{
fileName[i]=part.getFileName();
System.out.println(fileName[i]);
fileName[i]=fileName[i].valueOf(i)+fileName[i].substring(fileName[i].indexOf("."),fileName[i].length());
System.out.println(fileName[i]);
inputStream[i]=part.getInputStream();
System.out.println(inputStream[i].toString());
String pathName="D:\\Online\\defaultroot\\mail\\附件\\";
File file=new File(pathName + fileName[i]);
FileOutputStream outfile=new FileOutputStream(file);
BufferedInputStream br=new BufferedInputStream(inputStream[i]);
BufferedOutputStream bw=new BufferedOutputStream(outfile);
int b;
while((b=br.read())!=-1)
{
bw.write(b);
}
bw.flush();
outfile.close();
}
}
}