📄 receivemail.java
字号:
package mail;import javax.mail.*; //引用javax.mail包,此包中包含Store、Transport等重要类import javax.mail.internet.*;import javax.activation.*;import java.util.*;import java.io.*;public class ReceiveMail{ private String host = ""; //Mail server名 private String user = ""; //用户名 private String pwd = ""; //密码 private Message message[]; //message对象数组 private Store store; //store对象 private Folder folder; public ReceiveMail() { //空构造函数,读者可以给里面加入相应内容,以扩大此程序的功能 } public int connectHost(String host,String user,String pwd) //连接pop3服务器,收email { try { setHost(host); //设置服务器名 setUser(user); //设置用户名 setPwd(pwd); //设置密码 Session sessionmail =Session.getInstance(new Properties(),null); //得到Session对象 store=sessionmail.getStore("pop3"); //得到Store对象 store.connect(host,user,pwd); //连接服务器 folder=store.getFolder("INBOX"); //得到默认的收件箱文件夹 folder.open(Folder.READ_WRITE); //打开此文件夹 message=folder.getMessages(); //得到message对象数组 return 1; //成功返回1 } catch(Exception e) { return 0; //失败返回0 } } //设置接收邮件服务器的地址 private void setHost(String str) { host = str; } //设置用户名 private void setUser(String str) { user = str; } //设置密码 private void setPwd(String str) { pwd = str; } //得到发件人的Vector public Vector getFrom() { Vector v_from = new Vector(); try { for(int i=0;i < message.length;i++) { //通过标记找出没有被标记为删除的邮件 if (!message[i].isSet(Flags.Flag.DELETED)) { //由于getFrom方法返回的是一个发件人的数组,但大多数情况发件人是一个人,所以数组下标用0 v_from.addElement(getChineseStr(message[i].getFrom()[0].toString())); } } } catch(Exception e) //发生异常的处理 { System.out.println("getFrom Error:"+e); v_from.clear(); } return v_from; //返回Vector } //得到邮件是否被阅读过的标记 public Vector getFlag() { Vector v_flag = new Vector(); try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { //有些邮件系统不支持Flags.Flag.SEEN这个标记,所以无法判断是否是新邮件 //实例中用的Imail Server就不支持该标记,所以通过这个方法判断不出邮件 //是否是新邮件 if (message[i].isSet(Flags.Flag.SEEN)) { v_flag.addElement("seen"); //看过的邮件 } else { v_flag.addElement("new"); //新邮件 } } } } catch(Exception e) //发生异常后的处理 { System.out.println("getFlag Error:"+e); v_flag.clear(); } return v_flag; //返回Vector } //得到邮件的主题Vector public Vector getSubject() { Vector v_subject=new Vector(); try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { //调用getChineseStr显示中文标题,有些邮件系统不支持中文标题,我用的imail server这个版本 //就不支持中文标题,邮件内容也是一样 v_subject.addElement(getChineseStr(message[i].getSubject())); } } } catch(Exception e) //发生异常后的处理 { System.out.println("getSubject Error:"+e); v_subject.clear(); } return v_subject; //返回Vector } //得到邮件内容的Vector public Vector getContent() { Vector v_content=new Vector(); try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { Object content=message[i].getContent(); //普通的文本文件,本实例没有涉及到复杂的邮件(html邮件,带附件的邮件等) //感兴趣的读者可以通过本实例举一反三 if (message[i].isMimeType("text/plain")) { //调用getChineseStr显示中文内容。 v_content.addElement(getChineseStr(content.toString())); } else if(message[i].isMimeType("multipart/*")) //复杂邮件时 { Multipart mp=(Multipart)content; Part part=mp.getBodyPart(0); v_content.addElement(getChineseStr(part.getContent().toString())); } } } } catch(Exception e) //出现异常的处理 { System.out.println("getContent Error:"+e); v_content.clear(); } return v_content; //返回Vector }/* 有附件时,没有测试,读者可参考public String getContent(String path){ String Vcontent=""; try { for(int i=0;i < message.length;i++) { if (!message[i].isSet(Flags.Flag.DELETED)) { Object content=message[i].getContent(); if (message[i].isMimeType("text/plain")) { Vcontent=Vcontent+content.toString()+","; } else if(message[i].isMimeType("multipart/*")) { Multipart mp=(Multipart)content; for (int j=0;j<mp.getCount();j++) { Part part=mp.getBodyPart(j); //get the content type of this part String contentType=part.getContentType(); if (contentType==null) { Vcontent="Bad content type"; continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -