📄 emailreceiver.java
字号:
String fullDir = storedir+separator+fileName;
File storefile = new File(fullDir);
System.out.println("storefile's path: "+storefile.toString());
//for(int i=0;storefile.exists();i++){
//storefile = new File(storedir+separator+fileName+i);
//}
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try{
bos = new BufferedOutputStream(new FileOutputStream(storefile));
bis = new BufferedInputStream(in);
int c;
while((c=bis.read()) != -1){
bos.write(c);
bos.flush();
}
}catch(Exception exception){
exception.printStackTrace();
throw new Exception("文件保存失败!");
}finally{
bos.close();
bis.close();
}
return fileName;
}
/**
* "printMessage()" 方法打印一条消息.
*/
public static void printMessage(Message message)
{
try
{
// 得到标头信息
String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
if(from == null)
{
from = ((InternetAddress)message.getFrom()[0]).getAddress();
}
System.out.println("FROM: " + from);
String subject = message.getSubject();
System.out.println("SUBJECT: " + subject);
// -- 得到消息部分(也就是说消息本身)--
Part messagePart = message;
Object content = messagePart.getContent();
// --如果是multipart消息,就是其第一个body part--
if(content instanceof Multipart)
{
messagePart = ((Multipart)content).getBodyPart(0);
System.out.println("[ Multipart Message ]");
}
// -- 得到类型--
String contentType = messagePart.getContentType();
// -- 如果内容是plain文本,我们可以打印它--
System.out.println("CONTENT:" + contentType);
if(contentType.startsWith("text/plain") || contentType.startsWith("text/html"))
{
InputStream is = messagePart.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String thisLine = reader.readLine();
while(thisLine != null)
{
System.out.println(thisLine);
thisLine = reader.readLine();
}
}
System.out.println("-----------------------------");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
protected static String decodeText(String text) throws UnsupportedEncodingException{
if(text==null)
return null;
if (text.startsWith("=?GB") || text.startsWith("=?gb"))
text = MimeUtility.decodeText(text);
else
text = new String(text.getBytes("ISO8859_1"));
return text;
}
public static String getFromBASE64(String s) {
if (s == null) return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
return null;
}
}
//中文问题终极解决方案
public static String decodeWord(String s)
{
if(!s.startsWith("=?"))
return s;
int i = 2;
int j;
if((j = s.indexOf(63, i)) == -1)
return s;
String s1 = (s.substring(i, j));
i = j + 1;
if((j = s.indexOf(63, i)) == -1)
return s;
String s2 = s.substring(i, j);
i = j + 1;
if((j = s.indexOf("?=", i)) == -1)
return s;
String s3 = s.substring(i, j);
try
{
ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(s3.getBytes());
Object obj;
if(s2.equalsIgnoreCase("B"))
obj = new BASE64DecoderStream(bytearrayinputstream);
else
if(s2.equalsIgnoreCase("Q"))
obj = new QDecoderStream(bytearrayinputstream);
else
return s;
int k = bytearrayinputstream.available();
byte abyte0[] = new byte[k];
k = ((InputStream) (obj)).read(abyte0, 0, k);
return new String(abyte0, 0, k );
}
catch(Exception ex)
{
return s;
}
}
//得到邮件大小
public static String getMessageSize(Message currentMessage)
throws MessagingException{
String size="?";
int bsize=currentMessage.getSize();
if( (bsize<0)&&(bsize!=-1) ){
bsize=-bsize;
}
if (bsize!=-1){
if (bsize>=1024*1024){
int mbsize=bsize/(1024*1024);
size=mbsize+"MB";
}else if(bsize>=1024){
int kbsize=bsize/1024;
size=kbsize+"KB";
}else{
size=bsize+"Bytes";
}
}
return size;
}
public static int getMessageSizeInt(Message currentMessage)
throws MessagingException{
int size=0;
int bsize=currentMessage.getSize();
if( (bsize<0)&&(bsize!=-1) ){
bsize=-bsize;
}
return size;
}
public void showMessage(String popServer,String popUser,String popPassword,String messageNum,String whitchBox)
{
Store store = null;
Folder folder = null;
try
{
// -- 得到缺省会话--
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
session.setDebug(true);
// -- 得到一个POP3消息存储设备并与它连接--
store = session.getStore("imap");
store.connect(popServer,popUser,popPassword);
// -- 得到缺省文件夹--
folder = store.getDefaultFolder();
if(folder == null)
{
throw new Exception("No default folder");
}
// -- ...以及收件箱 --
if(whitchBox.equals("receiveBox")){
folder = folder.getFolder("INBOX");
}else if(whitchBox.equals("sendBox")){
folder = folder.getFolder("INBOX.Sent");
}else if(whitchBox.equals("draftBox")){
folder = folder.getFolder("INBOX.Drafts");
}else{
folder = folder.getFolder("INBOX.Trash");
}
if(folder == null)
{
throw new Exception("No POP3 INBOX");
}
// -- 以读写方式打开文件夹--
folder.open(Folder.READ_WRITE);
// -- 得到消息包并进行处理--
Message[] msgs = folder.getMessages();
for(int msgNum = 0;msgNum < msgs.length;msgNum++)
{
printMessage(msgs[msgNum]);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
// -- 注意关闭 --
try
{
if(folder != null)
{
folder.close(true);
}
if(store != null)
{
store.close();
}
}
catch(Exception ex2)
{
ex2.printStackTrace();
}
}
}
public void deleteMessage(String popServer,String popUser,String popPassword,String [] messageNum,String whitchBox,String isAll)
{
Store store = null;
Folder folder = null;
try
{
// -- 得到缺省会话--
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
session.setDebug(true);
// -- 得到一个POP3消息存储设备并与它连接--
store = session.getStore("imap");
store.connect(popServer,popUser,popPassword);
// -- 得到缺省文件夹--
folder = store.getDefaultFolder();
if(folder == null)
{
throw new Exception("No default folder");
}
// -- ...以及收件箱 --
Folder folderTrash = folder.getFolder("INBOX.Trash");
if(whitchBox.equals("receiveBox")){
folder = folder.getFolder("INBOX");
}else if(whitchBox.equals("sendBox")){
folder = folder.getFolder("INBOX.Sent");
}else if(whitchBox.equals("draftBox")){
folder = folder.getFolder("INBOX.Drafts");
}else{
folder = folder.getFolder("INBOX.Trash");
}
if(folder == null)
{
throw new Exception("No POP3 INBOX");
}
// -- 以读写方式打开文件夹--
folder.open(Folder.READ_WRITE);
// -- 得到消息包并进行处理--
Message[] msgs = folder.getMessages();
ArrayList msgsArr = new ArrayList();
for(int msgNum = 0;msgNum < msgs.length;msgNum++)
{
for(int j=0;j<messageNum.length;j++)
{
if(Util.processInt(messageNum[j])==msgs[msgNum].getMessageNumber())
{
msgsArr.add(msgs[msgNum]);
}
}
}
Message[] msgsNew =new Message[msgsArr.size()];
for(int msgNumNew=0;msgNumNew<msgsArr.size();msgNumNew++)
{
msgsNew[msgNumNew]= (Message)msgsArr.get(msgNumNew);
}
if( (!whitchBox.equals("trashBox"))&&(isAll==null) ){
folder.copyMessages(msgsNew, folderTrash);
}
for(int i=0;i<msgsNew.length;i++)
{
msgsNew[i].setFlag(Flags.Flag.DELETED,true);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
// -- 注意关闭 --
try
{
if(folder != null)
{
folder.close(true);
}
if(store != null)
{
store.close();
}
}
catch(Exception ex2)
{
ex2.printStackTrace();
}
}
}
public static void saveAsDraft(String popServer,String popUser,String popPassword,Message mesg)
{
Store store = null;
Folder folder = null;
try
{
// -- 得到缺省会话--
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
session.setDebug(true);
// -- 得到一个POP3消息存储设备并与它连接--
store = session.getStore("imap");
store.connect(popServer,popUser,popPassword);
// -- 得到缺省文件夹--
folder = store.getDefaultFolder();
if(folder == null)
{
throw new Exception("No default folder");
}
// -- ...以及收件箱 --
folder = folder.getFolder("INBOX.Drafts");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -