java - 我无法将我的用户名和密码从一个 jframe 转移到另一个 jframe

标签 java jakarta-mail netbeans-7

EmailClient.java

package sendemail;

    public class EmailClient extends javax.swing.JFrame {

        SendMail sm=new SendMail();
        Settings set=new Settings();
        public EmailClient() {
            initComponents();
        }


        @SuppressWarnings("unchecked")
        +Generated code                     

        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
           // TODO add your handling code here:
            sm.setVisible(true);
        }                                        

        private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
        }                                        

        private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
        }                                        

        private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
            // TODO add your handling code here:
            set.setVisible(true);
        }                                          

        public static void main(String args[]) {
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new EmailClient().setVisible(true);
                }
            });
        }

        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JButton jButton3;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JLabel jLabel4;
        private javax.swing.JLabel jLabel5;
        private javax.swing.JLabel jLabel6;
        private javax.swing.JMenu jMenu4;
        private javax.swing.JMenu jMenu5;
        private javax.swing.JMenuBar jMenuBar2;
        private javax.swing.JMenuItem jMenuItem2;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JPanel jPanel3;
        private javax.swing.JPanel jPanel4;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTextArea jTextArea1;
        // End of variables declaration                   
    }

Settings.java

package sendemail;
    import javax.swing.*;
    import java.awt.*;

    public class Settings extends javax.swing.JFrame {

        public String uname;
        public String pass;
        public String smtpserver;
        public String  port;
        /**
         * Creates new form Settings
         */
        public Settings() {
            initComponents();
        }

        public String getUname() {
            return uname;
        }

        public String getPass() {
            return pass;
        }

        public String getSmtpserver() {
            return smtpserver;
        }

        public String getPort() {
            return port;
        }



        @SuppressWarnings("unchecked")
        +Generated Code                   

        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
           uname=jTextField1.getText().toString();
            pass=jPasswordField1.getPassword().toString();

            smtpserver=jComboBox1.getSelectedItem().toString();
            port=jComboBox2.getSelectedItem().toString();

            if(uname.equals("") || pass.equals("") || smtpserver.equals("") || port.equals("") )
        {
                JOptionPane.showMessageDialog(this,"All Fields are mandatory");
        }                                        
        else
            {
                setVisible(false);
            }

        }                                        

        private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
            // TODO add your handling code here:
        }                                          

        public static void main(String args[]) {
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Settings().setVisible(false);
                }
            });
        }

        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JComboBox jComboBox1;
        private javax.swing.JComboBox jComboBox2;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JLabel jLabel4;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JPasswordField jPasswordField1;
        private javax.swing.JTextField jTextField1;
        // End of variables declaration                   

    }

SendMail.Java

package sendemail;

    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.swing.JOptionPane;
    import java.awt.*;
    import javax.mail.*;
    import javax.mail.MessagingException;


    public class SendMail extends javax.swing.JFrame {

        Settings setfrm=new Settings();
        String subject;
        String from;

        public SendMail() {
            initComponents();
        }


        @SuppressWarnings("unchecked")
        +Generated Code                    

        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
            try
            {
            final String user=setfrm.getUname();
            final String password=setfrm.getPass();
            String portnum=setfrm.getPort();
            String smtpname=setfrm.getSmtpserver();
            String to=jTextField1.getText();
            subject=jTextField2.getText();
            Properties properties=new Properties();
            properties.put("mail.smtp.host",smtpname.toString());
            properties.put("mail.smtp.socketFactory.port",portnum.toString());
            properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
            properties.put("mail.smtp.port",portnum.toString());
            properties.put("mail.smtp.auth","true");
            Session session=Session.getDefaultInstance(properties,
               new javax.mail.Authenticator() {
                   protected PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication(user,password);

               }

               }

               );
            MimeMessage message=new MimeMessage(session);
            message.setFrom(new InternetAddress(user));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(jTextField1.getText().toString()));
            message.setSubject(subject);
            message.setText(jTextArea1.getText());
            Transport.send(message);
            JOptionPane.showMessageDialog(null,"message sent");
            }
            catch(MessagingException mex)
            {
                JOptionPane.showMessageDialog(null,mex);
            }
        }                                        

        private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
        }                                        

        private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
            // TODO add your handling code here:
        }                                           

        public static void main(String args[]) {
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new SendMail().setVisible(true);
                }
            });
        }

        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTextArea jTextArea1;
        private javax.swing.JTextField jTextField1;
        private javax.swing.JTextField jTextField2;
        // End of variables declaration                   

    }

错误

javax.mail.AuthenticationFailedException
    at javax.mail.Service.connect(Service.java:306)
    at javax.mail.Service.connect(Service.java:156)
    at javax.mail.Service.connect(Service.java:105)
    at com.sun.mail.smtp.SMTPTransport.connect(SMTPTransport.java:93)
    at javax.mail.Transport.send0(Transport.java:168)
    at javax.mail.Transport.send(Transport.java:98)
    at sendemail.SendMail.jButton1ActionPerformed(SendMail.java:189)
    at sendemail.SendMail.access$100(SendMail.java:25)
    at sendemail.SendMail$2.actionPerformed(SendMail.java:77)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3311)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
BUILD SUCCESSFUL (total time: 42 seconds)

我发现问题仅在于将值从一个框架传输到另一个框架。用户名和密码的值在 Settings.java 中被接受并传输到 SendEmail.java

最佳答案

您有两个不同的 Settings 类实例 - 一个在 SendMail 中,另一个在 EmailClient 中。更改一个实例不会影响另一个实例。在 SendMail 中创建一个接受 Settings 实例的构造函数:

public SendMail(Settings settings) {
    this.setfrm = settings;
    initComponents();
}

并在EmailClient中编辑SendMail的初始化:

Settings set=new Settings();
SendMail sm=new SendMail(set);

public EmailClient() {
    initComponents();
}

因此,您确保 SendMailEmailClient 使用同一个 Settings 实例(Google 有关 Java 中的引用资料以获取更多信息) )。

关于java - 我无法将我的用户名和密码从一个 jframe 转移到另一个 jframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515245/

相关文章:

java - 无法访问可执行 Jar 中的资源

java - 为什么我无法从 servlet 发送电子邮件并获取 java.security.AccessControlException?

java - 获取数据库中的用户名和用户类型给程序Java

java - 通过java/html/jsp动态运行word宏

java - 将两个简单的 JLabel 添加到 jframe

java - JDBI批处理操作是原子的吗?

java - JasperReports 在 Netbeans 中完美运行,我的 PDF 已生成,但编译后的 .jar 没有生成

Java 类异常未按预期工作

Session.getInstance 的 Java 邮件问题

java - 如何在java中使用Date类型并从键盘读取值