Ciao a tutti, ho scritto un programma che data la mail e la password ritorna il numero di mail non lette ogni 5 minuti nella propria casella di posta.
Funziona perfettamente attraverso un ciclo di questo tipo:
la variabile connected l'ho impostata a true per verificare la correttezza del programma.codice:while(connected){ if(inbox.getUnreadMessageCount() != 0) System.out.println("Unread messages: " + inbox.getUnreadMessageCount()); else System.out.println("No new messages"); Thread.sleep(1000 * 60 * 5); }
Ora vorrei realizzare la parte grafica, cioè 1 finestra con 2 campi, rispettivamente JTextField (Username) e JPasswordField (Password) e un pulsante (Connetti/Disconnetti).
La mia intenzione era settare connected a false e attraverso un actionListener sul click del JButton portare connected a true e assegnare username e password per la connessione.
Ma...mentre da terminale lo Scanner attende l'iserimento, qui il programma va avanti e trovando username e password a null da errore.
Qualche consiglio?
Grazie in anticipo...posto qui in basso qualche riga di codice
ecodice:import java.awt.*; import javax.swing.*; import java.awt.event.*; public class GUI extends JFrame implements ActionListener{ public Image icon = Toolkit.getDefaultToolkit().getImage("C:\\Users\\*****\\Documents\\NetBeansProjects\\MailNotifier\\icon.png"); public JPanel panel; public JTextField user; public JButton b; public JPasswordField pwd; public JLabel userlab; public JLabel pwdlab; public JCheckBox check; public JLabel res; Connection aux = new Connection(); public GUI(){ setTitle("Mail Notifier"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); setIconImage(icon); setSize(400, 350); setLocation((screenSize.width / 2) - (getWidth() / 2), (screenSize.height / 2) - (getHeight() / 2)); setResizable(false); panel = new JPanel(); panel.setLayout(null); Insets insets = panel.getInsets(); userlab = new JLabel("Username"); Dimension userlabsize = userlab.getPreferredSize(); userlab.setBounds(25 + insets.left, 25 + insets.top, userlabsize.width, userlabsize.height); panel.add(userlab); user = new JTextField(30); Dimension usersize = user.getPreferredSize(); user.setBounds(25 + insets.left, 50 + insets.top, usersize.width, usersize.height); panel.add(user); pwdlab = new JLabel("Password"); Dimension pwdlabsize = pwdlab.getPreferredSize(); pwdlab.setBounds(25 + insets.left, 100 + insets.top, pwdlabsize.width, pwdlabsize.height); panel.add(pwdlab); pwd = new JPasswordField(30); Dimension pwdsize = pwd.getPreferredSize(); pwd.setBounds(25 + insets.left, 125 + insets.top, pwdsize.width, pwdsize.height); panel.add(pwd); check = new JCheckBox("Show password field"); Dimension checksize = check.getPreferredSize(); check.setBounds(22 + insets.left, 150 + insets.top, checksize.width, checksize.height); panel.add(check); b = new JButton("Connect"); Dimension bsize = b.getPreferredSize(); b.setBounds(200 + insets.left - bsize.width, 200 + insets.top, bsize.width * 2, bsize.height); panel.add(b); res = new JLabel("Unread messages: " /*+*/ ); Dimension ressize = res.getPreferredSize(); res.setBounds(200 + insets.left - ressize.width / 2, 250 + insets.top, ressize.width, ressize.height); panel.add(res); check.addActionListener(this); b.addActionListener(this); this.getContentPane().add(panel); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } @Override public void actionPerformed(ActionEvent ae){ if(ae.getSource() == check){ if(check.isSelected()) pwd.setEchoChar((char) 0); else pwd.setEchoChar('•'); } else if(ae.getSource() == b){ aux.username = user.getText(); aux.password = String.valueOf(pwd.getPassword()); b.setText("Disconnect"); aux.connected = true; } } }
codice:import java.util.*; import javax.mail.*; public class Connection{ public Folder inbox; public String username; public String password; public boolean connected = false; public Connection(){ Properties props = System.getProperties(); props.setProperty("mail.store.protocol", "imaps"); try{ Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("imaps"); store.connect("imap.gmail.com", username, password); inbox = store.getFolder("Inbox"); while(connected){ if(inbox.getUnreadMessageCount() != 0) System.out.println("Unread messages: " + inbox.getUnreadMessageCount()); else System.out.println("No new messages"); Thread.sleep(1000 * 60 * 5); } } catch(MessagingException e){ System.out.println("Error1"); } catch(InterruptedException e){ System.out.println("Error2"); } } }

Rispondi quotando