📄 mailcomplex.java~66~
字号:
package mailofjava;/** 本程序演示以下内容 1 message的标志演示 2 如何删除邮件 3 如何在服务器端搜索出符合条件的邮件 4 接收附件并存在硬盘上 */import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import javax.mail.Flags.*;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;import java.io.*;public class MailComplex extends JFrame { Message[] msg; Message msga; Flags flg; Stack attachedFiles;//放文件名 JLabel jl[]=new JLabel[20]; Icon iic; Image img; Container ct; public MailComplex() { super("ok"); ct = this.getContentPane() ; ct.setLayout(new FlowLayout()); attachedFiles = new Stack(); CreateMessage cm=new CreateMessage(1);//取得数据 msg=cm.getMessage() ; flg=cm.getCFlags() ; if( flg.contains(Flags.Flag.DELETED ) ) System.out.println("有删除标记"); else System.out.println("no删除标记"); if( flg.contains(Flags.Flag.ANSWERED ) ) System.out.println("有ansewer记"); else System.out.println("no answer 记"); msga=msg[0];//只处理一个邮件,如果有附件的话,处理第一个图形附件 try{ if(!msga.isMimeType("multipart/mixed") ){ System.err.println("错误,本程序只接收带附件图片的邮件,请重新发送") ; System.exit(0); }// 判断是不是有附件 attachHandle();//处理附件 this.showAttachedFileName() ; /* if(msga.isSet(Flags.Flag.DELETED ))//其它标记不支持的 System.out.println("mail 0:deleted"); else System.out.println("mail 0:okay"); msga.setFlag(Flags.Flag.DELETED ,true);//删除标记 System.out.println("mail 0:deleted");//请用foxmail远程功能检查是否删除*/ } catch(Exception e){ System.out.print("意外:不能处理删除");System.exit(1); };}//构造public void attachHandle(){try{ Multipart mp1 =(Multipart ) msga.getContent() ; for(int i=0;i<mp1.getCount() ;i++){ BodyPart bp1= mp1.getBodyPart(i) ;//只处理第一级附件,附件不处理 System.err.println("取出第"+i+"部份,类型"+bp1.getContentType()) ; if(bp1.isMimeType("image/*") ){//如果是图像就存个盘 String disposition= bp1.getDisposition() ; if(disposition!=null && (disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE ))) { String name= bp1.getFileName(); attachedFiles.push(name);//压入 FileOutputStream fos=new FileOutputStream( name);//新建文件存在documentbase上 BufferedInputStream in = new BufferedInputStream(bp1.getInputStream() ); int c; while((c=in.read() )!=-1)//直接用writeto什么东西也没有 fos.write(c); in.close() ; fos.close() ; fos=null; }//dispostion如果是可以存盘的附件 }//if(bp1.isMimeType("image/*") }//for }catch(Exception e){ e.printStackTrace() ;};}//attachHandlepublic void showAttachedFileName(){ Enumeration enum = attachedFiles.elements() ; while(enum.hasMoreElements() ) System.err.println("附件: "+ enum.nextElement() ); String myname; int j; j=0; while(! attachedFiles.isEmpty() ){//扫描stack myname=(String) attachedFiles.pop() ;//取出一个附件 iic=new ImageIcon(myname); jl[j] =new JLabel(myname ,iic,SwingConstants.HORIZONTAL ); ct.add(jl[j]); j=j+1; }}//显示 public static void main(String[] args) { MailComplex mailComplex1 = new MailComplex(); mailComplex1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); mailComplex1.setSize(400,200); mailComplex1.setVisible(true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -