📄 javamailframe.java
字号:
/* * JavaMailFrame.java * * Created on 2008年7月30日, 上午11:17 */package hjx.recvmail;import com.sun.mail.pop3.POP3Folder;import hjx.sendmail.WaitingWindow;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.PrintStream;import java.io.UnsupportedEncodingException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Properties;import java.util.logging.Level;import java.util.logging.Logger;import javax.mail.Address;import javax.mail.FetchProfile;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Part;import javax.mail.Session;import javax.mail.Store;import javax.mail.UIDFolder;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.table.DefaultTableModel;/** * * @author hujx */public class JavaMailFrame extends javax.swing.JFrame { MailAccount account; POP3Folder folder; ArrayList<InMessage> inMsgs = new ArrayList<InMessage>(); ArrayList<String> UIDs = new ArrayList<String>(); ImageIcon attachIco = new ImageIcon(getClass().getResource("/img/attachment.gif")); WaitingWindow waitDlg; /** Creates new form JavaMailFrame */ public JavaMailFrame(MailAccount account) { this.account = account; initComponents(); try { ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(account.host + account.userName + ".dat"))); UIDs = (ArrayList<String>)in.readObject(); inMsgs = (ArrayList<InMessage>) in.readObject(); in.close(); for (InMessage inMsg :inMsgs) { ImageIcon ico = null; if (inMsg.attaches != null && inMsg.attaches.size() > 0) ico = attachIco; ((DefaultTableModel) jTable1.getModel()).addRow(new Object[]{inMsg.send, inMsg.subject, inMsg.sentDate, inMsg.size, inMsg, ico}); } } catch (Exception ex) { Logger.getLogger(JavaMailFrame.class.getName()).log(Level.SEVERE, null, ex); } this.jTable1.getColumnModel().removeColumn(jTable1.getColumn("message")); this.setExtendedState(JFrame.MAXIMIZED_BOTH); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jToolBar1 = new javax.swing.JToolBar(); btnRecv = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jToolBar1.setRollover(true); btnRecv.setText("收取"); btnRecv.setFocusable(false); btnRecv.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btnRecv.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); btnRecv.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnRecvActionPerformed(evt); } }); jToolBar1.add(btnRecv); getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "发件人", "主题", "日期", "大小", "message", "附件" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } public Class getColumnClass(int columnIndex) { if (columnIndex < 5) return Object.class; else return ImageIcon.class; } }); jTable1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jTable1MouseClicked(evt); } }); jScrollPane1.setViewportView(jTable1); getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); pack(); }// </editor-fold>//GEN-END:initComponentsprivate void btnRecvActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRecvActionPerformed// TODO add your handling code here: if (waitDlg == null) { waitDlg = new WaitingWindow(this); } Thread recThread = new Thread(new Runnable() { public void run() { JavaMailFrame.this.setEnabled(false); try { // Create empty properties Properties props = new Properties(); // Get session Session session = Session.getInstance(props, null); // Get the store session.setDebug(true); Store store = session.getStore("pop3"); store.connect(account.host, account.userName, account.passWord); // Get folder folder = (POP3Folder) store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); FetchProfile profile = new FetchProfile(); profile.add(UIDFolder.FetchProfileItem.UID); // profile.add(FetchProfile.Item.ENVELOPE); //取回头部 // Get directory Message message[] = folder.getMessages(); folder.fetch(message, profile); //执行UIDL for (int i = 0, n = message.length; i < n; i++) { if (!UIDs.contains(folder.getUID(message[i]))) addToTable((MimeMessage)message[i]); } folder.close(false); store.close(); JavaMailFrame.this.setEnabled(true); waitDlg.setVisible(false); } catch (Exception ex) { JavaMailFrame.this.setEnabled(true); waitDlg.setVisible(false); JOptionPane.showMessageDialog(JavaMailFrame.this, "连接失败!"); ex.printStackTrace(); } finally { ObjectOutputStream out = null; try { out = new ObjectOutputStream(new FileOutputStream(new File(account.host + account.userName + ".dat"))); out.writeObject(UIDs); out.writeObject(inMsgs); out.close(); } catch (Exception ex) { Logger.getLogger(JavaMailFrame.class.getName()).log(Level.SEVERE, null, ex); } finally { try { out.close(); } catch (IOException ex) { Logger.getLogger(JavaMailFrame.class.getName()).log(Level.SEVERE, null, ex); } } } } }); recThread.start(); waitDlg.setVisible(true);}//GEN-LAST:event_btnRecvActionPerformedprivate void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked// TODO add your handling code here: if (evt.getClickCount() == 2) { // Double click MessageDialog1 msgDlg = new MessageDialog1(this, true); msgDlg.showMessage((InMessage)jTable1.getModel().getValueAt(jTable1.getSelectedRow(), 4));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -