📄 mimemultipartview.java
字号:
package org.lazybug.mime.view;
import java.io.*;
import javax.mail.MessagingException;
import org.lazybug.mime.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class MimeMultipartView
{
//part最大限制
public static final int MAX_MIME_PART_SIZE = 10;
private MimeMultipart message;
/*消息预览的当前编号*/
private int pid;
/*临时路径 */
private String tempPath;
/**/
private boolean isHasMoreViewPart;
/*M*/
private MimePart myParts[] = new MimePart[MAX_MIME_PART_SIZE];
/*通过路径构造View,但是不下载消息中的实体对象
public MimeMultipartView()
{
this.message = new MimeMultipart();
}*/
/*通过路径构造View,但是不下载消息中的实体对象
public MimeMultipartView(String path) throws IOException
{
File file = new File(path);
FileInputStream input = new FileInputStream(file);
this.message = new MimeMultipart(input);
}*/
/*通过路径构造View
public MimeMultipartView(String path, String temp_path) throws IOException
{
File file = new File(path);
FileInputStream input = new FileInputStream(file);
this.message = new MimeMultipart(input);
try
{
downloadFileFromEntry( this.message ,temp_path);
}
catch(MessagingException e )
{
}
finally
{
input.close();
}
}*/
/*直接通过part构造View*/
public MimeMultipartView(MimeMultipart part, String path)
{
this.message = part;
this.tempPath = path;
initialize();
}
public void initialize()
{
this.pid = -1;
isHasMoreViewPart = false;
setPart(this.message);
}
private void setPart(MimeMultipartEntry part)
{
MimeMultipartEntry entries[] = part.getMultipartEntries();
if( entries.length == 0 )
{
myParts[part.getMimei()] = part;
}
else
{
for(int i = 0; i < entries.length; i++ )
{
setPart(entries[i]);
}
}
}
/**
* 得到消息的MessageId
* @return String
*/
public String getMessageId()
{
if( this.message != null ) return this.message.getMessageId();
return null;
}
/**
* 是否有下一个文件part
*/
public boolean hasMoreImgOrTxtPart()
{
return isHasMoreViewPart;
}
public MimePart goForwardPart()
{
for( int i = this.pid + 1; i < this.message.getMimei(); i++ )
{
if( myParts[i] == null ) continue;
if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("image") )
{
if( myParts[i].isExistTempFile() )
{
this.pid = i;
return myParts[i];
}
if( this.tempPath == null ) return null;
try
{
MimeMultipartEntry.setFilePart( myParts[i], tempPath);
this.pid = i;
return myParts[i];
}
catch( Exception e )
{
e.printStackTrace();
}
}
else if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("text") )
{
this.pid = i;
return myParts[i];
}
}
//System.out.println("pid="+this.pid);
if( pid >= 0 ) return myParts[this.pid];
return null;
}
public MimePart goBackPart()
{
//System.out.println("pid="+this.pid);
for( int i = this.pid - 1; i >= 0; i-- )
{
if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("image") )
{
if( myParts[i].isExistTempFile() )
{
this.pid = i;
return myParts[i];
}
if( this.tempPath == null ) return null;
try
{
MimeMultipartEntry.setFilePart( myParts[i], tempPath);
this.pid = i;
return myParts[i];
}
catch( Exception e )
{
e.printStackTrace();
}
}
else if( myParts[i].getContentType().getPrimaryType().equalsIgnoreCase("text") )
{
this.pid = i;
return myParts[i];
}
}
if( pid >= 0 ) return myParts[this.pid];
return null;
}
/**
* 去下一个图片或者文字帧
*
public MimePart goToNextImgOrTxtPart()
{
this.isHasMoreViewPart = false;
MimeMultipartEntry entries[] = this.message.getMultipartEntries();
MimePart part = null;
if( entries.length > 0 )
{
try{
for( int i = 0; i < entries.length; i++ )
{
if( part == null )
{
part = goToNextImgOrTxtPart( entries[i] );
this.pid = part.getMimei();
}
else if( goToNextImgOrTxtPart( entries[i] ) != null )
{
this.isHasMoreViewPart = true;
break;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
return null;
}*/
/*
*去下一个图片或者文字部件
*
private MimePart goToNextImgOrTxtPart(MimeMultipartEntry entry)
throws IOException, MessagingException
{
if( entry.getMimei() <= this.pid ) return null;
MimeMultipartEntry entries[] = entry.getMultipartEntries();
if( entries.length == 0 )
{
if( entry.getContentType().getPrimaryType().equalsIgnoreCase("image") )
{
if( entry.isExistTempFile() ) return entry;
if( this.tempPath == null ) return null;
MimeMultipartEntry.setFilePart(entry, tempPath,
Long.toHexString(System.currentTimeMillis()>>16));
return entry;
}
else if( entry.getContentType().getPrimaryType().equalsIgnoreCase("text") )
{
return entry;
}
}
else
{
for(int i = 0; i < entries.length; i++ )
{
if( goToNextImgOrTxtPart(entries[i]) != null )
return entries[i];
}
}
return null;
}*/
public static String getTextPartContent(MimePart part)
{
if( !part.getContentType().getPrimaryType().equals("text") ) return null;
String content = null;
try{
String encoding = part.getEncoding();
byte buf[] = null;
int i = 0;
if( encoding != null )
{
ByteArrayInputStream in = new ByteArrayInputStream( part.
getPayload() );
InputStream in1 = MimeUtility.decode( in, encoding );
int k = in1.available();
buf = new byte[k];
i = in1.read( buf, 0, k );
}
else
{
buf = part.getPayload();
i = buf.length;
}
//com.kehaoinfo.util.Tools.printb(buf, 0, i);
String charset = part.getContentType().getParameter( "charset" );
if( charset != null )
{
content = new String( buf, 0, i, charset );
}
else
{
content = new String(buf, 0, i);
}
}
catch(Exception e){
content = "";
e.printStackTrace();
}
return content;
}
/*从Multipart实体中下载文件*/
public static void downloadFileFromEntry(MimeMultipartEntry entry, String path)
throws IOException, MessagingException
{
MimeMultipartEntry entries[] = entry.getMultipartEntries();
//System.out.println("MIMEI:"+entry.mimei+" entries-length="+entries.length);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -