?? receivemail.java
字號(hào):
package WebMail;
/**
* <p>Title: 企業(yè)郵箱管理系統(tǒng)</p>
* <p>Description: 收發(fā)郵件_收郵件Bean</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: 南京仕邦有限公司</p>
* @author W.L.B
* @version 1.0
*/
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;
import javax.activation.*;
public class receiveMail {
public int numberOfTatol = 0;
public int numberOfUnread= 0;
public int numberOfNewMail = 0;
public String[] attachFilename = new String[10];
public String[] mailTo = new String[10];
public String[] html = new String[10];
private Message[] messages;
private Folder folder;
private Session session;
private URLName ServerUrlName;
private javax.mail.Store str;
private boolean IsGBCode;
public receiveMail() {
}
public int receive(String usr,String pass, String Host)
{
return recieve(usr,pass,Host);
}
public int recieve(String usr,String pass,String Host)
{
String Server ="pop3://";
Server +=usr.trim()+":"+pass.trim()+"@"+Host.trim()+"/INBOX";
try
{
ServerUrlName=new URLName(Server);
Properties props=new Properties();
session=Session.getInstance(props,null);
str = session.getStore("pop3");
folder=session.getFolder(ServerUrlName);
if (folder == null)
{
println("Not Found Folder:"+Server);
return -1;
}
else
{
folder.open(Folder.READ_WRITE);
//郵件的總數(shù)
numberOfTatol = folder.getMessageCount();
numberOfUnread = folder.getUnreadMessageCount();
numberOfNewMail = folder.getNewMessageCount();
messages = folder.getMessages();
//開辟郵件的總數(shù)個(gè)附件名稱的String數(shù)組(空間)
attachFilename = new String[numberOfTatol];
html = new String[numberOfTatol];
for( int i = 0;i<html.length;i++)
html[i] = "h";
if(messages.length==0) //NO EMAIL
{
print("Your Folder Not New EMAIL " );
folder.close(true);
str.close();
return 1;
}
return 0;
}
}
catch(Exception e)
{
print("ERROR :"+e.getMessage());
return -2;
}
}
/**
* <P>得到郵件的主題</p>
*/
public String GetSubject(int count)
{
return getsubject(count);
}
public String getsubject(int count)
{
boolean bgetstr;
String temps;
String[] ta1=null;
String _subject="無主題";
try
{
ta1 = messages[count].getHeader("Subject");
}
catch(Exception ex)
{
return _subject;
}
if (ta1 != null)
_subject=ta1[0];
else
_subject="";
if (_subject.indexOf("=?GB2312")!=-1 || _subject.indexOf("=?GBK")!=-1 || _subject.indexOf("=?utf-8")!=-1)
{
bgetstr=false;
IsGBCode=false;
_subject = Mytool.toChinese(_subject,"gb2312");
}
else
{
bgetstr=true;
_subject = Mytool.toChinese(_subject,"ISO8859-1");
}
try
{
temps = MimeUtility.decodeText(_subject);
}
catch(UnsupportedEncodingException E)
{
return _subject;
}
if (temps.length()==0)
{
temps="(無主題)";
bgetstr=false;
}
//QP 解碼
//temps = Mytool.Ucode_QP(temps);
if (bgetstr==false)
{
if (temps.lastIndexOf("B2312") !=-1)
temps=Mytool.getStr(temps);
return temps;//=Mytool.Ucode_QP(temps);
}
else
return temps ;
}
/**
* <p>得到郵件的大小</p>
*/
public String GetSize(int count)
{
float size =0;
String strsize="";
try
{
size = messages[count].getSize();
if ((size/1000000)>1)
{
size = size/1000;
strsize = size + "M" ;
}
else
{
size = size/1000;
strsize = size + "K" ;
}
return strsize ;
}
catch(Exception ex){
printErr(count,"Get Mail Size Error "+ex.toString());
return "";
}
}
/**
* <p>得到發(fā)件人</P>
*/
public String Getaddress(int count)
{
String str ="";
String str1="";
String str2="";
try
{
str = (InternetAddress.toString(messages[count].getFrom() ));
str1 = findEmailAddress(str);
str2 = getEmailName(str);
str = Mytool.toChinese(str1,"ISO8859-1");
return str;
}
catch(Exception ex)
{
return "Get From Err ...";
}
}
public String getEmailName(String str)
{
try
{
int foreindex=str.indexOf("<");
if(foreindex!=-1)
str=str.substring(0,foreindex);
return str;
}
catch(Exception e)
{
return str;
}
}
public String findEmailAddress(String str)
{
try
{
int foreindex=str.indexOf("<");
int backindex=str.indexOf(">");
if(foreindex!=-1&&backindex!=-1)
str=str.substring(foreindex+1,backindex);
return str;
}
catch(Exception e)
{
return str;
}
}
public String GetFrom(int count)
{
return Getaddress(count);
}
/*
* <p>得到發(fā)件日期</p>
*/
public String GetRecievedDate(int count)
{
try
{
return messages[count].getSentDate().toString();
}
catch(Exception ex)
{
print("Get Date Err ...");
return "";
}
}
/**
*<p>判斷是否是HTML 類型</p>
* */
public boolean IsHTML(int count)
{
boolean b = false;
if (html[count].trim() =="HTML")
b = true;
return b;
}
/**
* <p> 判斷是否有附件</p>
* */
public boolean Isattach(int count)
{
boolean b = false;
try
{
Part Msgport = messages[count];
Object body = Msgport.getContent();
//messages[count].setFlag(Flags.Flag.SEEN,true);
javax.mail.Multipart mp=(Multipart)body;
attachFilename[count]="";
for ( int i =1;i<mp.getCount();i++)
{
Part part = mp.getBodyPart(i);
//String dis = part.getDescription();
// if ((dis != null) && (
// (dis.equals(Part.ATTACHMENT)||(dis.equals(Part.INLINE)))))
if (mp.getBodyPart(i).getFileName() != null)
{
attachFilename[count] += mp.getBodyPart(i).getFileName()+";";
b = true; // 有附件
}
}
}
catch(ClassCastException CCEx)
{
}
catch(UnsupportedEncodingException Eex)
{
printErr(count,Eex.toString());
}
catch(Exception ex)
{
printErr(count,ex.toString() );
}
return b;
}
/**
* <p> 得到正文 </p>
* */
public String GetBody(int count)
{
String sstr="";
try
{
Object body = messages[count].getContent();
//if( messages[count].getContentType().indexOf("text") ==0)
// sstr = process(messages[count],count);
//else
sstr = process((Multipart)body,count);
}
catch(Exception ex)
{
}
//sstr = Mytool.Ucode_QP(sstr);
//sstr = Mytool.getStr(sstr);
return sstr;
}
/**
* <p> 將附件存到目錄</p>
* */
public void Getattach(int count,String filepath)
{
try
{
Object body=messages[count].getContent();
//filepath = Mytool.getStr(filepath);
processMulti((Multipart)body,count,filepath);
}
catch(Exception ex)
{
printErr(count,"Get Attach Err "+ex.toString() );
}
}
/* *
* <p> 正文</p>
*/
public String process(Part p,int cnt)
{
String str ="";
boolean isQP = false;
try
{
if (p.getContentType().indexOf("text/html") !=-1)
html[cnt] ="HTML";
com.sun.mail.util.ASCIIUtility utl= null;
InputStream is =p.getInputStream();
byte[] bb = null;
bb = utl.getBytes(is);
str= new String(bb);
// 是否是quoted-printable 編碼
if (str.indexOf("quoted-printable") !=-1)
{
str = Mytool.Ucode_QP(str);
str = Mytool.toChinese(str,"ISO8859-1");
}
/*
while (thisLine!=null)
{
str = str + thisLine +"\r\n";
//
thisLine=reader.readLine();
}
*/
// gg = Mytool.toChinese(gg,"gb2312");
//print(str);
return str;
}
catch(Exception ex)
{
printErr(cnt, "Get Body Err "+ex.toString() );
return "";
}
}
/**
* <p> 附件名 </p>
*/
public String[] GetattachFilename(int cnt)
{
String[] aa = new String[1];
//attachFilename[cnt] =attachFilename[cnt].substring(0,attachFilename[cnt].length()-1);
if (attachFilename[cnt].endsWith(";"))
attachFilename[cnt] =attachFilename[cnt].substring(0,attachFilename[cnt].length()-1);
Object[] objArr = Mytool.separateFileName(attachFilename[cnt],';');
aa = new String[objArr.length];
for (int i =0 ;i<objArr.length;i++)
{
if ((String)objArr[i] != null)
{
aa[i] = (String)objArr[i];
}
}
return aa;
}
/**
* <p> 附件 </p>
* */
public String processMulti(Multipart p,int cnt,String filepath)
{
String str ="";
try
{
for (int j=1;j< p.getCount();j++)
{
String filename = p.getBodyPart(j).getFileName();
if (filename == null)
str = "";
else if (filename != null)
{
System.out.println("文件為A:"+filename);
//if (filename.indexOf("??") == 0 )
//filename = Mytool.getStr(filename);
// else
filename = Mytool.getStr(filename);
System.out.println("文件為B:"+filename);
File f = new File(filepath);
System.out.println("目錄為:"+filepath);
filepath = f.getAbsolutePath();
System.out.println("虛擬目錄為:"+filepath);
File attchFile = new File(filepath);
attchFile.mkdirs();
try
{
attchFile = new File(filepath,filename);
//if(attchFile.exists())
InputStream is =p.getBodyPart(j).getInputStream();
FileOutputStream out = new FileOutputStream(attchFile);
while( is.available()>0)
{
out.write(is.read() );
}
is.close();
out.close();
}
catch(Exception ex)
{
attchFile = new File(filepath,filename);
InputStream is =p.getBodyPart(j).getInputStream();
FileOutputStream out = new FileOutputStream(attchFile);
while( is.available()>0)
{
out.write(is.read() );
}
is.close();
out.close();
}
}
}
return str;
}
catch(Exception ex)
{
printErr(cnt,"Get Att Err "+ex.toString() );
return str;
}
}
public String process(Multipart p,int cnt)
{
String str ="";
try
{
for (int j=0;j< p.getCount();j++)
{
String filename = p.getBodyPart(j).getFileName();
if (filename == null)
str = process(p.getBodyPart(j),cnt);
}
return str;
}
catch(Exception ex)
{
return "";
}
}
/**
* <p>設(shè)置Delete 標(biāo)志 </p>
*/
public void setFlagDelete(int count)
{
try
{
messages[count].setFlag(Flags.Flag.DELETED,true);
//closefolder();
}
catch(Exception Ex)
{
print("Delete Mail Err :"+Ex.getMessage());
}
}
public void setFlagRreaded(int count)
{
try
{
messages[count].setFlag(Flags.Flag.FLAGGED,true);
//closefolder();
}
catch(Exception Ex)
{
print("Readed Mail Err :"+Ex.getMessage());
}
}
public void setFlagDelete(int count,String str)
{
String path="";
String pathf="";
if (str.trim() =="") return ;
try
{
//得到當(dāng)前目錄
File s = new File("ss");
String p = s.getAbsolutePath();
p = p.substring(0,p.lastIndexOf("\\"));
str= p+"\\"+str;
print("current path: "+str);
java.io.File f = new java.io.File(str);
if (f.exists())
{
path = str.substring(0,str.lastIndexOf("\\"));
pathf= path.substring(path.lastIndexOf("\\"));
path = path.substring(0,path.lastIndexOf("\\"));
int cnt = f.list().length;
String[] newf = new String[cnt];
for(int i=0;i< cnt;i++)
newf[i]=f.list()[i].toString();
for(int i=0;i< cnt;i++)
{
java.io.File ff = new java.io.File(str,newf[i]);
if (ff.exists())
System.out.println("file delete: "+ff.delete());
}
System.out.println(path);
System.out.println(pathf);
java.io.File fff = new java.io.File(path,pathf);
if (fff.exists())
System.out.println("path delete: "+fff.delete());
}
setFlagDelete(count);
}
catch(Exception Ex)
{
print(Ex.toString());
}
}
public void CloseFolder()
{
try
{
folder.close(true);
}
catch(Exception ex)
{
print("CloseFolder Err :"+ex.toString());
}
}
public void print(String str)
{
System.out.println(str);
}
public void println(String str)
{
print(str);
}
public void printErr(int cnt,String str)
{
System.out.println("第【"+cnt+"】封郵件有錯(cuò): "+str+"");
}
/////////////////////////
public void ReopenFolder()
{
try
{
//folder=session.getFolder(ServerUrlName);
folder.open(Folder.READ_WRITE);
}
catch(Exception ex)
{
}
}
//////////////////////////////////
public static void main(String args[])
{
receiveMail recmail = new receiveMail();
int intMsg = 0;
//popserver是:pop3://name:password@tech.hiaward.com/INBOX Draft
intMsg = recmail.recieve("woo","asdc","hiaward.com");
System.out.println(" 共有郵件:"+recmail.numberOfTatol+"件" );
System.out.println("共有未讀郵件:"+recmail.numberOfUnread+"件" );
System.out.println(" 共有新郵件:"+recmail.numberOfNewMail+"件" );
for (int i=1;i<=recmail.numberOfTatol;i++)
{
System.out.print("第<"+i+">封郵件:");
System.out.print(" 發(fā) 件 人 :"+recmail.Getaddress(i-1));
System.out.print(" 主 題 :"+recmail.getsubject(i-1));
System.out.print(" 接收 時(shí)間 : "+recmail.GetRecievedDate(i-1));
// System.out.print(" 文件大小 : "+recmail.GetSize(i-1));
System.out.println();
System.out.println(" 正 文 : ");
System.out.print(recmail.GetBody(i-1));
System.out.println(recmail.IsHTML(i-1)+"HTML");
System.out.print(" 是否有附件: "+recmail.Isattach(i-1));
if (recmail.Isattach(i-1))
{
for (int aa=0;aa<recmail.GetattachFilename(i-1).length;aa++)
System.out.print(" 個(gè)附件 名為 : "+recmail.GetattachFilename(i-1)[aa]);
recmail.Getattach(i-1,"d\\d\\daa\\發(fā)d發(fā)\\");
}
System.out.println();
}
// recmail.setFlagDelete(1,"d\\d\\daa\\發(fā)d發(fā)\\") ;
recmail.setFlagRreaded(0);
// recmail.CloseFolder();
// recmail.ReopenFolder();
}
//End
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -