接收电子邮件并将其存储在jTable中 [英] Receiving emails and storing it in jTable

查看:87
本文介绍了接收电子邮件并将其存储在jTable中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从我的电子邮件帐户接收邮件.但是我无法将其存储在jtable中.我想,当选择了一个行的内容将显示在这样做,因为.这是我的代码段.

I am trying to receive mails from my email account. But i am not able to store it in jtable. I want to do this because when one row is selected the contents will be displayed in jTextArea. This is my code snippet.

public void connect() {
    final String pass = set.pass;
    final String user = set.uname;
    try {

        Properties props = new Properties();

        props.put("mail.imap.host", "imap.gmail.com");

        props.put("mail.imap.socketFactory", 995);

        props.put("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

        props.put("mail.imap.port", 995);

        Session session = Session.getDefaultInstance(props, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(user, pass);

                }
            });


        Store store = session.getStore("imap");

        store.connect("imap.gmail.com", "mymail@gmail.com", "mypaswword");

        Folder folder = store.getFolder("INBOX");

        folder.open(Folder.READ_ONLY);

        Message[] msg = folder.getMessages();

        FetchProfile profile = new FetchProfile();
        profile.add(FetchProfile.Item.ENVELOPE);
        folder.fetch(msg, profile);
        jTable2.add(msg);


        folder.close(true);
        store.close();

    } catch (Exception e) {
        System.out.println(e);
    }
}

此行出现错误

jTable2.add(msg);

我应该怎么做.

推荐答案

add is used to add components to a container rather than data to the JTable. You could create a custom AbstractTableModel specifically for storing Message references

public class MessageTableModel extends AbstractTableModel {

    private List<Message> messages;

    public MessageTableModel(List<Message> messages) {

        this.messages = new ArrayList<Message>(messages);
    }

    @Override
    public int getRowCount() {
        return messages.size();
    }

    @Override
    public int getColumnCount() {
        return 2;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {

        Object value = "??";
        Message message = messages.get(rowIndex);
        switch (columnIndex) {
            case 0:
                StringBuilder builder = new StringBuilder();

                for (Address a: message.getFrom()) {
                    builder.append(a);
                    builder.append(",");
                }
                value = builder.toString();
                break;

            case 1:
                value = message.getSubject();
                break;
        }

        return value;
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return String.class;
    }

    /* Override this if you want the values to be editable...
    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //....
    }
    */

    /**
     * This will return the Message at the specified row...
     * @param row
     * @return 
     */
    public Message getMessageAt(int row) {
        return messages.get(row);
    }
}

这篇关于接收电子邮件并将其存储在jTable中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆