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:
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);
}
la variabile connected l'ho impostata a true per verificare la correttezza del programma.
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
codice:
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;
}
}
}
e
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");
}
}
}