import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import java.io.*; public class MailReceiver extends JFrame { private JTextField host = new JTextField("imap.gmail.com"); private JTextField port = new JTextField("993"); private JTextField username = new JTextField(); private JTextField password = new JTextField(); private JTextField numberOfMessages = new JTextField("10"); private JTextArea messages = new JTextArea(); public static void main(String[] args) { new MailReceiver(); } public MailReceiver() { setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(5, 2)); panel.add(new JLabel("Host:")); panel.add(host); panel.add(new JLabel("Port:")); panel.add(port); panel.add(new JLabel("Username:")); panel.add(username); panel.add(new JLabel("Password:")); panel.add(password); panel.add(new JLabel("Antal meddelanden:")); panel.add(numberOfMessages); JButton button = new JButton("Receive"); button.addActionListener(new L()); getContentPane().add("North", panel); getContentPane().add("South", button); getContentPane().add("Center", new JScrollPane(messages)); setSize(640, 400); show(); } public void receive() { try { Properties props = new Properties(); props.setProperty("mail.store.protocol","imap"); props.setProperty("mail.imap.host", host.getText()); props.setProperty("mail.imap.port", port.getText()); props.setProperty("mail.imap.ssl.enable","true"); //props.setProperty("mail.debug", "true"); Session session = Session.getDefaultInstance(props, null); //session.setDebug(true); // Get the store Store store = session.getStore("imap"); store.connect(host.getText(), Integer.parseInt(port.getText()), username.getText(), password.getText()); // Get hold of the default folder Folder folder = store.getDefaultFolder(); if (folder == null) throw new Exception("No default folder"); // ... and its INBOX folder = folder.getFolder("INBOX"); if (folder == null) throw new Exception("No POP3 INBOX"); // -- Open the folder for read only -- folder.open(Folder.READ_ONLY); // Get directory Message message[] = folder.getMessages(); messages.setText(""); //for (int i = 0, n = message.length; i < n; i++) { for (int i = 0, n = Integer.parseInt(numberOfMessages.getText()); i < n; i++) { //messages.append("FROM: " + message[i].getFrom()[0] + "\n" + "SUBJECT: " + message[i].getSubject() + "\n"); //messages.append((String)message[i].getContent() + "\n"); printMessage(message[i]); //Thread.sleep(1000); messages.update(messages.getGraphics()); } folder.close(false); store.close(); } catch(Exception e) {} } public void printMessage(Message message) { try { // Get the header information String from = ((InternetAddress)message.getFrom()[0]).getPersonal(); if (from == null) from = ((InternetAddress)message.getFrom()[0]).getAddress(); messages.append("FROM: " + from + "\n"); String subject = message.getSubject(); messages.append("SUBJECT: " + subject + "\n"); // -- Get the message part (i.e. the message itself) -- Part messagePart = message; Object content = messagePart.getContent(); // -- or its first body part if it is a multipart message -- if (content instanceof Multipart) { messagePart=((Multipart)content).getBodyPart(0); messages.append("" + "\n"); } // -- Get the content type -- String contentType = messagePart.getContentType(); // -- If the content is plain text, we can print it -- // messages.append("CONTENT TYPE: " + contentType + "\n"); if (contentType.startsWith("text/plain") || contentType.startsWith("text/html") || contentType.startsWith("TEXT/PLAIN") || contentType.startsWith("TEXT/HTML")) { InputStream is = messagePart.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String thisLine = reader.readLine(); while (thisLine != null) { messages.append(thisLine + "\n"); thisLine = reader.readLine(); //System.out.println(thisLine); } } messages.append("##############################" + "\n"); } catch (Exception ex) { ex.printStackTrace(); } } class L implements ActionListener { public void actionPerformed(ActionEvent ae) { receive(); } } }