import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; import java.util.*; public class ReceiveMail extends JFrame { private JTextField host = new JTextField("mail.dsv.su.se"); private JTextField port = new JTextField("110"); private JTextField user = new JTextField(); private JPasswordField passwd = new JPasswordField(); private JTextArea messageArea = new JTextArea(); private JTextArea systemArea = new JTextArea(); public static void main(String[] args) { new ReceiveMail(); } public ReceiveMail() { JLabel hostL = new JLabel("Host:"); host.setColumns(12); JLabel portL = new JLabel("Port:"); port.setColumns(12); JLabel userL = new JLabel("User:"); user.setColumns(12); JLabel passwdL = new JLabel("Password:"); passwd.setColumns(12); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(5, 2)); panel.add(hostL); panel.add(host); panel.add(portL); panel.add(port); panel.add(userL); panel.add(user); panel.add(passwdL); panel.add(passwd); JButton button = new JButton("Receive"); button.addActionListener(new L()); getContentPane().add("North", panel); getContentPane().add("South", button); JPanel panelArea = new JPanel(); panelArea.setLayout(new GridLayout(2, 1)); panelArea.add(new JScrollPane(messageArea)); panelArea.add(new JScrollPane(systemArea)); getContentPane().add("Center", panelArea); setSize(640, 400); show(); } private void receive() { try { Socket socket = new Socket(host.getText(), Integer.parseInt(port.getText())); setTitle("CONNECTED TO: " + host.getText() + " - ON PORT: " + port.getText()); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); systemArea.append(in.readLine() + "\n"); out.println("USER " + user.getText()); systemArea.append("USER " + user.getText() + "\n"); systemArea.append(in.readLine() + "\n"); String password = new String(passwd.getPassword()); out.println("PASS " + password); systemArea.append("PASS **********\n"); systemArea.append(in.readLine() + "\n"); // Ta reda på antalet mail out.println("STAT"); systemArea.append("STAT\n"); String stat = in.readLine(); systemArea.append(stat + "\n"); StringTokenizer st = new StringTokenizer(stat); st.nextToken(); int count = Integer.parseInt(st.nextToken()); // Hämta alla mail for(int i = 0; i < count; i++) { out.println("RETR " + (i + 1)); stat = in.readLine(); systemArea.append("RETR " + (i + 1) + "\n"); String line = "-"; while((line = in.readLine()) != null) { messageArea.append(line + "\n"); systemArea.append(line + "\n"); if(line.equals(".")) break; } } out.println("QUIT"); systemArea.append("QUIT" + "\n"); in.close(); out.close(); setTitle("MESSAGES RECEIVED: " + count); } catch (IOException e) { setTitle("IOException generated\n"); } } class L implements ActionListener { public void actionPerformed(ActionEvent ae) { receive(); } } }