⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javamailframe.java

📁 使用JavaMail开发的具有发送、接收邮件的应用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * 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 + -