📄 recievepanel.java
字号:
package mailbox;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.border.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import javax.mail.internet.*;
import javax.mail.*;
import java.util.*;
public class RecievePanel extends JPanel {
waitDialog wait=new waitDialog();
JTree recieveTree;
DefaultMutableTreeNode recieveNode;
DefaultTreeModel recieveModel;
DefaultMutableTreeNode node;
JTree sendTree;
DefaultMutableTreeNode sendNode;
DefaultTreeModel sendModel;
Vector recieveVector=new Vector();
Vector sendVector=new Vector();
JLabel contentLabel=new JLabel();
JTextArea contentArea = new JTextArea();
JScrollPane areaJsp=new JScrollPane(contentArea);
JScrollPane treeJsp1;
JScrollPane treeJsp2;
JLabel jLabel3 = new JLabel();
JTextField fromField = new JTextField();
JLabel jLabel4 = new JLabel();
JTextField subjectField = new JTextField();
JLabel jLabel5 = new JLabel();
JTextField attachField = new JTextField();
Border border1;
JButton recieveButton = new JButton();
ProcessMessage processM=new ProcessMessage();
JLabel dateLabel=new JLabel();
JTextField dateField = new JTextField();
public RecievePanel() {
try {
jbInit();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
recieveNode=new DefaultMutableTreeNode("收件箱");
recieveModel = new DefaultTreeModel(recieveNode);
recieveTree = new JTree(recieveModel);
recieveTree.setEditable(false);
recieveTree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
recieveTree.setShowsRootHandles(true);
recieveTree.addTreeSelectionListener(new treeLis1());
/* DefaultMutableTreeNode node1=new DefaultMutableTreeNode("messgae1");
recieveModel.insertNodeInto(node1, recieveNode,recieveNode.getChildCount());
recieveTree.scrollPathToVisible(new TreePath(node1.getPath()));
MyMessage mymessage=new MyMessage();
mymessage.setSubject("niaho");
node1.setUserObject(mymessage);
System.out.println(((MyMessage)node1.getUserObject()).getSubject());
*/
sendNode=new DefaultMutableTreeNode("已保存邮件");
sendModel = new DefaultTreeModel(sendNode);
sendTree = new JTree(sendModel);
sendTree.setEditable(false);
sendTree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
sendTree.setShowsRootHandles(true);
sendTree.addTreeSelectionListener(new treeLis2());
treeJsp1=new JScrollPane(recieveTree);
treeJsp2=new JScrollPane(sendTree);
recieveTree.setFont(new java.awt.Font("Monospaced", 0, 12));
sendTree.setFont(new java.awt.Font("Monospaced", 0, 12));
treeJsp1.setBounds(new Rectangle(21, 10, 147, 177));
treeJsp2.setBounds(new Rectangle(21, 191, 147, 172));
/* DefaultMutableTreeNode messageNode1= new DefaultMutableTreeNode("nihao");
DefaultMutableTreeNode messageNode2= new DefaultMutableTreeNode("dajiahao");
recieveModel.insertNodeInto(messageNode1, recieveNode,recieveNode.getChildCount());
recieveModel.insertNodeInto(messageNode2, recieveNode,recieveNode.getChildCount());
recieveTree.scrollPathToVisible(new TreePath(messageNode1.getPath()));
recieveTree.scrollPathToVisible(new TreePath(messageNode2.getPath()));
*/
this.setLayout(null);
border1 = BorderFactory.createCompoundBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,Color.white,Color.white),BorderFactory.createEmptyBorder(2,2,2,2));
contentArea.setFont(new java.awt.Font("Monospaced", 0, 14));
contentArea.setToolTipText("");
contentLabel.setFont(new java.awt.Font("Monospaced", 0, 14));
contentLabel.setText("内容:");
contentLabel.setBounds(new Rectangle(193, 156, 66, 27));
areaJsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
areaJsp.getViewport().setBackground(Color.white);
areaJsp.setFont(new java.awt.Font("Monospaced", 0, 14));
areaJsp.setBounds(new Rectangle(187, 189, 347, 173));
jLabel3.setFont(new java.awt.Font("Monospaced", 0, 14));
jLabel3.setText("地址:");
jLabel3.setBounds(new Rectangle(190, 12, 51, 26));
dateLabel.setFont(new java.awt.Font("Monospaced", 0, 14));
dateLabel.setText("日期:");
dateLabel.setBounds(new Rectangle(190, 84, 47, 26));
dateField.setFont(new java.awt.Font("Monospaced", 0, 14));
dateField.setBounds(new Rectangle(290, 79, 243, 31));
fromField.setFont(new java.awt.Font("Monospaced", 0, 14));
fromField.setBounds(new Rectangle(290, 11, 243, 31));
jLabel4.setFont(new java.awt.Font("Monospaced", 0, 14));
jLabel4.setText("主题:");
jLabel4.setBounds(new Rectangle(191, 47, 48, 29));
subjectField.setFont(new java.awt.Font("Monospaced", 0, 14));
subjectField.setBounds(new Rectangle(290, 45, 243, 31));
jLabel5.setFont(new java.awt.Font("Monospaced", 0, 14));
jLabel5.setToolTipText("");
jLabel5.setText(" 附件:");
jLabel5.setBounds(new Rectangle(185, 117, 52, 33));
attachField.setFont(new java.awt.Font("Monospaced", 0, 14));
attachField.setBounds(new Rectangle(290, 117, 243, 31));
recieveButton.setFont(new java.awt.Font("Monospaced", 0, 14));
recieveButton.setBorder(border1);
recieveButton.setText("接收邮件");
recieveButton.setBounds(new Rectangle(421, 156, 111, 28));
recieveButton.addActionListener(new recieveAction());
this.add(fromField, null);
this.add(subjectField, null);
this.add(areaJsp, null);
this.add(contentLabel,null);
this.add(treeJsp1, null);
this.add(treeJsp2, null);
this.add(jLabel5, null);
this.add(jLabel3, null);
this.add(jLabel4, null);
this.add(dateField,null);
this.add(dateLabel,null);
this.add(attachField, null);
this.add(recieveButton, null);
}
class treeLis1 implements TreeSelectionListener,Serializable
{ DefaultMutableTreeNode node;
int index=-1;
public void valueChanged(TreeSelectionEvent e)
{
node=(DefaultMutableTreeNode)recieveTree.getLastSelectedPathComponent();
for(int i=0;i<recieveNode.getChildCount();i++)
if(node==(DefaultMutableTreeNode)recieveNode.getChildAt(i))
{index=i;
break;
}
if(index>=0)
{
String fs1="";
String fs2="";
String fs3="";
String fs4="";
String fs5="";
try{
fs1= MimeUtility.decodeText(findEmailAddress(((MyMessage)(recieveVector.elementAt(index))).getAddress()));
fs2= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getSubject());
fs3= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getAttachment());
fs4= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getContent());
fs5= MimeUtility.decodeText(((MyMessage)(recieveVector.elementAt(index))).getRecievedDate().toString());
}catch(Exception E){
System.out.println("Erro!");
}
fromField.setText(fs1);
subjectField.setText(fs2);
attachField.setText(fs3);
// System.out.println(((MyMessage)(recieveVector.elementAt(index))).getAttachment());
contentArea.setText(fs4);
dateField.setText(fs5);
}
}
}
class treeLis2 implements TreeSelectionListener,Serializable
{ DefaultMutableTreeNode node;
int index=-1;
public void valueChanged(TreeSelectionEvent e)
{
node=(DefaultMutableTreeNode)sendTree.getLastSelectedPathComponent();
for(int i=0;i<sendNode.getChildCount();i++)
if(node==(DefaultMutableTreeNode)sendNode.getChildAt(i))
{index=i;
break;
}
if(index>=0)
{
String fs1="";
String fs2="";
String fs3="";
String fs4="";
String fs5="";
try{
fs1= MimeUtility.decodeText(findEmailAddress(((MyMessage)(sendVector.elementAt(index))).getAddress()));
fs2= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getSubject());
fs3= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getAttachment());
fs4= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getContent());
fs5= MimeUtility.decodeText(((MyMessage)(sendVector.elementAt(index))).getRecievedDate().toString());
}catch(Exception E){
System.out.println("Erro!");
}
fromField.setText(fs1);
subjectField.setText(fs2);
attachField.setText(fs3);
// System.out.println(((MyMessage)(recieveVector.elementAt(index))).getAttachment());
dateField.setText(fs5);
contentArea.setText(fs4);
/*
fromField.setText(((MyMessage)(sendVector.elementAt(index))).getAddress());
subjectField.setText(((MyMessage)(sendVector.elementAt(index))).getSubject());
attachField.setText(((MyMessage)(sendVector.elementAt(index))).getAttachment());
dateField.setText(((MyMessage)(sendVector.elementAt(index))).getRecievedDate()+"");
contentArea.setText(((MyMessage)(sendVector.elementAt(index))).getContent());
*/
}
}
}
class recieveAction implements ActionListener,Serializable
{
public void actionPerformed(ActionEvent e)
{ wait.Start();
(new recieveThread()).start();
wait.setVisible(true);
}
}
class recieveThread extends Thread implements Serializable
{
String Server="pop3://"+User.getUserName()+":"+User.getPassWord()+"@"+User.getPop3Server()+"/INBOX";
public void run()
{ URLName ServerUrlName=new URLName(Server);
Properties props=new Properties();
try
{
Session session=Session.getDefaultInstance(props,null);
Folder folder=session.getFolder(ServerUrlName);
if(folder==null)
{
JOptionPane.showMessageDialog(null,"Sorry,找不到所要的文件夹:"+Server);
}
else
{
folder.open(Folder.READ_WRITE);
Message[] messages=folder.getMessages();
if(messages.length==0)
{
JOptionPane.showMessageDialog(null,"在你的邮箱里没有新的邮件!");
folder.close(false);
}
else
{
for(int i=0;i<messages.length;i++)
{
MyMessage mymessage=new MyMessage();
mymessage.setAddress(InternetAddress.toString(messages[i].getFrom()));
mymessage.setSubject(getsubject(messages[i]));
mymessage.setRecievedDate(messages[i].getSentDate());
mymessage.setIsHtml(true);
Object body=messages[i].getContent();
if(body instanceof Multipart)
{
processM.processMultipart((Multipart)body,mymessage,recieveVector);
}
else
{
processM.processPart(messages[i],mymessage,recieveVector);
}
recieveVector.addElement(mymessage);
DefaultMutableTreeNode messageNode= new DefaultMutableTreeNode(recieveVector.size()+"."+MimeUtility.decodeText(findEmailAddress(mymessage.getAddress())));
recieveModel.insertNodeInto(messageNode, recieveNode,recieveNode.getChildCount());
recieveTree.scrollPathToVisible(new TreePath(messageNode.getPath()));
messages[i].setFlag(Flags.Flag.DELETED,true);
}
folder.close(true);
}
}
wait.Stop();
wait.setVisible(false);
}
catch(Exception MessageE)
{ wait.Stop();
wait.setVisible(false);
JOptionPane.showMessageDialog(null,"Error:"+MessageE.getMessage());
}
}//run end
}//recieveThread end
public String getstr(String str)
{
try {
String temp_p=str;
byte[] temp_t=temp_p.getBytes("ISO8859-1");
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{ return str; }
}
public String getsubject(Message m) throws Exception
{
boolean bgetstr;
String temps;
String[] ta1=m.getHeader("Subject");
String _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;
else
bgetstr=true;
try{
temps=MimeUtility.decodeText(_subject);
}
catch(UnsupportedEncodingException E)
{return _subject;}
if (temps.length()==0)
{
temps="(无主题)";
bgetstr=false;
}
if (bgetstr==false)
return temps;
else
return getstr(temps);
}
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 getEmailName(String str)
{
try{
int foreindex=str.indexOf("<");
if(foreindex!=-1)
str=str.substring(0,foreindex);
return str;
}
catch(Exception e)
{
return str;
}
}
//end
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -