import javax.mail.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MailAuthenticator extends Authenticator { private JDialog passwordDialog = new JDialog(new JFrame(), true); private JLabel mainLabel = new JLabel( "Please enter your user name and password: "); private JLabel userLabel = new JLabel("User name: "); private JLabel passwordLabel = new JLabel("Password: "); private JTextField usernameField = new JTextField(20); private JPasswordField passwordField = new JPasswordField(20); private JButton okButton = new JButton("OK"); public MailAuthenticator() { this(""); } public MailAuthenticator(String username) { Container pane = passwordDialog.getContentPane(); pane.setLayout(new GridLayout(4, 1)); pane.add(mainLabel); JPanel p2 = new JPanel(); p2.add(userLabel); p2.add(usernameField); usernameField.setText(username); pane.add(p2); JPanel p3 = new JPanel(); p3.add(passwordLabel); p3.add(passwordField); pane.add(p3); JPanel p4 = new JPanel(); p4.add(okButton); pane.add(p4); passwordDialog.pack(); ActionListener al = new HideDialog(); okButton.addActionListener(al); usernameField.addActionListener(al); passwordField.addActionListener(al); } class HideDialog implements ActionListener { public void actionPerformed(ActionEvent e) { passwordDialog.hide(); } } public PasswordAuthentication getPasswordAuthentication() { passwordDialog.show(); // getPassword() returns an array of chars for security reasons. // We need to convert that to a String for // the PasswordAuthentication() constructor. String password = new String(passwordField.getPassword()); String username = usernameField.getText(); // Erase the password in case this is used again. // The provider should cache the password if necessary. passwordField.setText(""); return new PasswordAuthentication(username, password); } }