📄 emailreceiver.java
字号:
if(folder == null)
{
throw new Exception("No POP3 INBOX");
}
// -- 以读写方式打开文件夹--
folder.open(Folder.READ_WRITE);
Message [] msgs = new Message[1];
msgs[0] = mesg;
folder.appendMessages(msgs);
// folder.copyMessages(msgs, folder);
}
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 saveAsSent(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.Sent");
if(folder == null)
{
throw new Exception("No POP3 INBOX");
}
// -- 以读写方式打开文件夹--
folder.open(Folder.READ_WRITE);
Message [] msgs = new Message[1];
msgs[0] = mesg;
folder.appendMessages(msgs);
// folder.copyMessages(msgs, folder);
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
// -- 注意关闭 --
try
{
if(folder != null)
{
folder.close(true);
}
if(store != null)
{
store.close();
}
}
catch(Exception ex2)
{
ex2.printStackTrace();
}
}
}
public MessageBean addMessage(Message message)
{
MessageBean messageBean = new MessageBean();
try
{
// 得到标头信息
// String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
String from = null;
String address=null;
Part messagePart = message;
String replay="";
try{
replay=message.getAllRecipients()[0].toString();
}catch(Exception ex){
replay="";
}
try{
if(replay.indexOf("=?x-unknown?") >=0){
replay = replay.replaceAll("x-unknown","gbk" );
replay = MimeUtility.decodeText(replay);
}else{
replay = MimeUtility.decodeText(replay);
}
}catch(Exception ex){
}
if(message.getFrom()!=null){
from = message.getFrom()[0].toString();
from = from.replace(" ","");
from = from.replace(";","");
from = from.replace(",","");
from = from.replace("``''","");
InternetAddress ia=null;
try{
ia = new InternetAddress(from);
}catch(Exception ex){
ia = null;
}
if(ia==null){
from="发件人不详";
}else{
try{
if(ia.getPersonal().indexOf("=?x-unknown?") >=0){
from = ia.getPersonal().replaceAll("x-unknown","gbk" );
from = MimeUtility.decodeText(from);
}else{
from = MimeUtility.decodeText(ia.getPersonal());
}
}catch(Exception ex){
if( (ia.getPersonal()!=null)&&(ia.getPersonal().length()!=0) )
{
from = ia.getPersonal();
}else{
from = ia.getAddress();
}
}
address = ia.getAddress();
}
}else{
from="发件人不详";
}
try{
if(MimeUtility.decodeText(Util.isoToUtf8(from)).indexOf('?')<0){
from =Util.isoToGBK(from);
}
}catch(Exception ex){
from = "发件人不详";
}
// String address = ia.getAddress();
String subject = message.getSubject();
if((subject==null)||(subject.length()==0)){
subject="无主题";
}else if ( subject.indexOf("=?x-unknown?") >=0 ){
subject = subject.replaceAll("x-unknown","gbk" );
subject = MimeUtility.decodeText(subject);
}else{
subject = MimeUtility.decodeText(subject);
}
if(MimeUtility.decodeText(Util.isoToUtf8(subject)).indexOf('?')<0){
subject =Util.isoToGBK(subject);
// System.out.println(MimeUtility.decodeText(Util.isoToUtf8(subject)).indexOf('?')+"ddddddddddddddddddd"+MimeUtility.decodeText(Util.isoToUtf8(subject)));
}
String sizeStr = getMessageSize(message);
int sizeByte = getMessageSizeInt(message);
Date fromDate = message.getReceivedDate();
String fromDateS = Util.getFormatDate(fromDate);
int emailId = message.getMessageNumber();
boolean isSeen = message.isSet(Flags.Flag.SEEN);
boolean isContainAttach=false;
ArrayList attachmentNames = new ArrayList();
try{
attachmentNames = this.getAttachMentNames(messagePart);
}catch(Exception e){
}
if(attachmentNames.size()>0){
isContainAttach = true;
}
// message.setFlag(Flags.Flag.DELETED,true);
messageBean.setFrom(from);
messageBean.setSubject(subject);
messageBean.setSizeStr(sizeStr);
messageBean.setFromDate(fromDate);
messageBean.setEmailId(emailId);
messageBean.setFromDateS(fromDateS);
messageBean.setSizeInt(sizeByte);
messageBean.setAddress(address);
// messageBean.setMessageCount(messageCount);
// messageBean.setUnreadMessageCount(unreadMessageCount);
messageBean.setSeen(isSeen);
messageBean.setContainAttach(isContainAttach);
messageBean.setReplay(replay);
// messageBean.setMessagePart(messagePart);
/*
// -- 得到消息部分(也就是说消息本身)--
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();
}
}
*/
}
catch(Exception ex)
{
ex.printStackTrace();
}
return messageBean;
}
/* private static ArrayList getAttachmentNames(Part messagePart) {
// TODO Auto-generated method stub
return null;
}*/
/**
* 判断此邮件是否包含附件
*/
public boolean isContainAttach(Part part)throws Exception{
boolean attachflag = false;
String contentType = part.getContentType();
if(part.isMimeType("multipart/*")){
Multipart mp = (Multipart)part.getContent();
for(int i=0;i<mp.getCount();i++){
BodyPart mpart = mp.getBodyPart(i);
String disposition = mpart.getDisposition();
if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE))))
attachflag = true;
else if(mpart.isMimeType("multipart/*")){
attachflag = isContainAttach((Part)mpart);
}else{
String contype = mpart.getContentType();
if(contype.toLowerCase().indexOf("application") != -1) attachflag=true;
if(contype.toLowerCase().indexOf("name") != -1) attachflag=true;
}
}
}else if(part.isMimeType("message/rfc822")){
attachflag = isContainAttach((Part)part.getContent());
}
return attachflag;
}
/**
* 【保存附件】
*/
public void saveAttachMent(Part part)throws Exception{
String fileName = "";
if(part.isMimeType("multipart/*")){
Multipart mp = (Multipart)part.getContent();
for(int i=0;i<mp.getCount();i++){
BodyPart mpart = mp.getBodyPart(i);
String disposition = mpart.getDisposition();
if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))){
fileName = mpart.getFileName();
if(fileName.toLowerCase().indexOf("gb") != -1){
fileName = MimeUtility.decodeText(fileName);
}
saveFile(fileName,mpart.getInputStream());
}else if(mpart.isMimeType("multipart/*")){
saveAttachMent(mpart);
}else{
fileName = mpart.getFileName();
if((fileName != null) && (fileName.toLowerCase().indexOf("gb") != -1)){
fileName=MimeUtility.decodeText(fileName);
saveFile(fileName,mpart.getInputStream());
}
}
}
}else if(part.isMimeType("message/rfc822")){
saveAttachMent((Part)part.getContent());
}
}
/**
* 【设置附件存放路径】
*/
public void setAttachPath(String attachpath){
this.saveAttachPath = attachpath;
}
/**
* 【设置日期显示格式】
*/
public void setDateFormat(String format)throws Exception{
this.dateformat = format;
}
/**
* 【获得附件存放路径】
*/
public String getAttachPath(){
return saveAttachPath;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -