把你相关的代码贴出来,要不然怎么知道你错在哪?以下是一个样式:
private void getAttachFile(Part messagePart,BufferedOutputStream writeAttachObj) throws IOException, MessagingException { Object content = messagePart.getContent() ;
try
{
//这种情况下的邮件都是用multi模式发送的,
// 这种模式包括有附件的邮件和用html表示content的邮件
if (content instanceof Multipart)
{
Multipart contentTmp = (Multipart) content ;
//如果是MULTI模式发送的,BodyPart(0).getContent()肯定就是content
System.out.println("content==" + contentTmp.getBodyPart(0).getContent()) ;
//getCount()可以得到content中bodyPart的个数,content就是第一个
//bodyPart,其它的附件按照顺序类推。但是有的时候附件就是另外一个邮件,
//而这个邮件里边可能有其他的附件。下面代码用循环对嵌套情况进行解析。
for (int i = 0 ; i < contentTmp.getCount() ; i++)
{
if (contentTmp.getBodyPart(i).isMimeType("multipart/*"))
{
Multipart multipart = (Multipart) contentTmp.getBodyPart(i).getContent() ;
//这个地方增加循环是为了解决嵌套附件的情况。
for (int k = 0 ; k < multipart.getCount() ; k++)
{
//content也会存在于INPUTSTREAM中。
saveAttacheFile(multipart.getBodyPart(k).getContentType(), multipart.getBodyPart(k).getDisposition(), multipart.getBodyPart(k).getFileName(), multipart.getBodyPart(k).getInputStream(), writeAttachObj);
}
}
else
{
saveAttacheFile(contentTmp.getBodyPart(i).getContentType(), contentTmp.getBodyPart(i).getDisposition(), contentTmp.getBodyPart(i).getFileName(), contentTmp.getBodyPart(i).getInputStream(), writeAttachObj);
}
}
}
//这种情况中邮件是纯文本形式,并且没有附件
else
{
writeAttachObj.write(("content = "+content+"\r\n").getBytes()); writeAttachObj.flush();
}
}
catch (Exception ie)
{
System.out.println("exception====" + ie.getMessage()) ;
}
}
private void getAttachFile(Part messagePart,BufferedOutputStream writeAttachObj) throws IOException, MessagingException { Object content = messagePart.getContent() ;
try
{
//这种情况下的邮件都是用multi模式发送的,
// 这种模式包括有附件的邮件和用html表示content的邮件
if (content instanceof Multipart)
{
Multipart contentTmp = (Multipart) content ;
//如果是MULTI模式发送的,BodyPart(0).getContent()肯定就是content
System.out.println("content==" + contentTmp.getBodyPart(0).getContent()) ;
//getCount()可以得到content中bodyPart的个数,content就是第一个
//bodyPart,其它的附件按照顺序类推。但是有的时候附件就是另外一个邮件,
//而这个邮件里边可能有其他的附件。下面代码用循环对嵌套情况进行解析。
for (int i = 0 ; i < contentTmp.getCount() ; i++)
{
if (contentTmp.getBodyPart(i).isMimeType("multipart/*"))
{
Multipart multipart = (Multipart) contentTmp.getBodyPart(i).getContent() ;
//这个地方增加循环是为了解决嵌套附件的情况。
for (int k = 0 ; k < multipart.getCount() ; k++)
{
//content也会存在于INPUTSTREAM中。
saveAttacheFile(multipart.getBodyPart(k).getContentType(), multipart.getBodyPart(k).getDisposition(), multipart.getBodyPart(k).getFileName(), multipart.getBodyPart(k).getInputStream(), writeAttachObj);
}
}
else
{
saveAttacheFile(contentTmp.getBodyPart(i).getContentType(), contentTmp.getBodyPart(i).getDisposition(), contentTmp.getBodyPart(i).getFileName(), contentTmp.getBodyPart(i).getInputStream(), writeAttachObj);
}
}
}
//这种情况中邮件是纯文本形式,并且没有附件
else
{
writeAttachObj.write(("content = "+content+"\r\n").getBytes()); writeAttachObj.flush();
}
}
catch (Exception ie)
{
System.out.println("exception====" + ie.getMessage()) ;
}
}
解决方案 »
- struts 2 封装jsp参数问题
- struts中action的方法addErrors不能编译
- EJB为服务端开发引入了快速应用开发(RAD)模型。这句话什么意思?
- 一台机器上多个服务器部署时的端口问题
- 修改100万条数据怎么做才能提高效率?(trip数据库)
- 探讨Hibernate分页的问题,来者有分
- 关于在SUN ONE APP SERVER PE8上设置jms服务的问题
- 当我CREATE SESSION得时候,weblogic是否会自动创建COOKIE
- 开发EJB遇到的一些问题。
- 请教线程问题!谢谢!
- 高手请进,关于读取*.txt文件的问题,急等
- 启动weblogic的错误,请教大虾怎么办?感激
//设置content里的内容
MimeBodyPart contentMbp = new MimeBodyPart();
//请指定字符集,否则会是乱码
contentMbp.setContent(_mailContent.getContent(), "text/html; charset=GB2312");
改为
messageBodyPart.setFileName(MimeUtility.encodeWord(fds.getName(), "GBD",null));
就OK了另外,你的信誉值不高,但记得给分哦~)~
contentMbp.setContent(_mailContent.getContent(), "text/html; charset=Big5");這樣的話contentMbp.setContent(_mailContent.getContent(), "text/html; charset=GB2312");
亂碼更多了些