这两个部分怎么能衔接起来阿, 前半部分是图形, 后半部分是发送邮件的程序,
我想要把在图形界面中的,由键盘输入的邮件地址传给 receiver, 
把主题, 传给subject, 把JTextArea中的内容(由键盘输入)发送出去.
哪位大哥能忙下忙, 小弟在此感激不尽!!
===================================
package lesson3;import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;public class nihao {
    public static void main(String[] args) {
      JFrame frame = new JFrame("My Mail System ");
      Container contentPane = frame.getContentPane();
  
    contentPane.setLayout (new FlowLayout());
     JPanel panel = new JPanel();
     JLabel label = new JLabel("TO: ",JLabel.LEFT);
     JTextField text = new JTextField(20);
     label.setDisplayedMnemonic(KeyEvent.VK_1);
     label.setLabelFor(text);
     panel.add(label);
     panel.add(text);
     
     JLabel label2 = new JLabel("Subject: ",JLabel.LEFT);
     JTextField text2 = new JTextField(20);
     panel.add(label2);
     panel.add(text2);
    contentPane.add(panel);
     
       JTextArea ta = new JTextArea(15, 40);
     JScrollPane jsp = new JScrollPane(ta);
     ta.setText("  ");   
           ta.setLineWrap(true);   
           ta.setWrapStyleWord(true);        frame.getContentPane().add(jsp,FlowLayout.CENTER); 
    
     JButton button1 = new JButton("OK");
    button1.setToolTipText("send it");
    contentPane.add(button1, FlowLayout.RIGHT);
       
    frame.setSize(600,400);
    //frame.pack();
    frame.setVisible(true);
    frame.setLocation(300,300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }
}class SMTPtest {
    //以下三项请在使用时改成真实的信箱地址
    //并且注意,SMTPServer和receiver必须是同一个服务器
    private static String sender = "[email protected]";
    private static String receiver = "输入邮件地址";
    private static String SMTPServer = "邮件服务器";
    public static void main(String[] args) {
        int SMTPPort = 25;
        Socket client = null;
        try {
            // 向SMTP服务程序建立一个套接字连接。
            client = new Socket(SMTPtest.SMTPServer, SMTPPort);
            // 创建一个BufferedReader对象,以便从套接字读取输出。
            InputStream is = client.getInputStream();
            BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
            // 创建一个PrintWriter对象,以便向套接字写入内容。
            OutputStream os = client.getOutputStream();
            PrintWriter sockout = new PrintWriter(os, true);
            // 显示同SMTP服务程序的握手过程。
            System.out.println("S:" + sockin.readLine());
            sockout.println("helo");
            System.out.println("S:" + sockin.readLine());
            sockout.println("mail from: " + "<" + SMTPtest.sender + ">");
            System.out.println("S:" + sockin.readLine());
            sockout.println("rcpt to: " + "<" + SMTPtest.receiver + ">");
            System.out.println("S:" + sockin.readLine());
            sockout.println("data");
            //发送邮件标题
            sockout.println("subject: Hello");
            //发送邮件内容
            sockout.println("Hi!");
            sockout.println("How are you?");
            //此处的.为特殊标记,表示邮件结束
            sockout.println(".");
            sockout.println("rset");
            sockout.println("quit");
        } catch (IOException e) {
            System.out.println(e.toString());
        } finally {
            try {
                if (client != null) {
                    client.close();
                }
            } catch (IOException e) {}
        }
    }
}

解决方案 »

  1.   

    建议用JavaMail
    会方便很多
      

  2.   

    估计LZ想自己实现一个应用而已吧,帮你修该了下,提供点思路
    package huangwei;
    import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;public class nihao {
        public static void main(String[] args) {
          JFrame frame = new JFrame("My Mail System ");
          Container contentPane = frame.getContentPane();    contentPane.setLayout (new FlowLayout());
         JPanel panel = new JPanel();
         JLabel label = new JLabel("TO: ",JLabel.LEFT);
         JTextField text = new JTextField("",20);
         label.setDisplayedMnemonic(KeyEvent.VK_1);
         label.setLabelFor(text);
         panel.add(label);
         panel.add(text);     JLabel label2 = new JLabel("Subject: ",JLabel.LEFT);
         JTextField text2 = new JTextField(20);
         panel.add(label2);
         panel.add(text2);
        contentPane.add(panel);       JTextArea ta = new JTextArea(15, 40);
         JScrollPane jsp = new JScrollPane(ta);
         ta.setText(" 2 ");   
               ta.setLineWrap(true);   
               ta.setWrapStyleWord(true);        frame.getContentPane().add(jsp,FlowLayout.CENTER);      JButton button1 = new JButton("OK");
        button1.setToolTipText("send it");
        button1.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
               
                            SMTPtest smt = new SMTPtest();
                           // smt.sender = 对应JTextField取值;
                            smt.dopost();
                       
                    }
                });
        contentPane.add(button1, FlowLayout.RIGHT);    frame.setSize(600,400);
        //frame.pack();
        frame.setVisible(true);
        frame.setLocation(300,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }
    }class SMTPtest {
        //以下三项请在使用时改成真实的信箱地址
        //并且注意,SMTPServer和receiver必须是同一个服务器
        public static String sender = "[email protected]";
        public static String receiver = "输入邮件地址";
        public static String SMTPServer = "邮件服务器";
        public static void dopost() {
            int SMTPPort = 25;
            Socket client = null;
            try {
                // 向SMTP服务程序建立一个套接字连接。
                client = new Socket(SMTPtest.SMTPServer, SMTPPort);
                // 创建一个BufferedReader对象,以便从套接字读取输出。
                InputStream is = client.getInputStream();
                BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
                // 创建一个PrintWriter对象,以便向套接字写入内容。
                OutputStream os = client.getOutputStream();
                PrintWriter sockout = new PrintWriter(os, true);
                // 显示同SMTP服务程序的握手过程。
                System.out.println("S:" + sockin.readLine());
                sockout.println("helo");
                System.out.println("S:" + sockin.readLine());
                sockout.println("mail from: " + "<" + SMTPtest.sender + ">");
                System.out.println("S:" + sockin.readLine());
                sockout.println("rcpt to: " + "<" + SMTPtest.receiver + ">");
                System.out.println("S:" + sockin.readLine());
                sockout.println("data");
                //发送邮件标题
                sockout.println("subject: Hello");
                //发送邮件内容
                sockout.println("Hi!");
                sockout.println("How are you?");
                //此处的.为特殊标记,表示邮件结束
                sockout.println(".");
                sockout.println("rset");
                sockout.println("quit");
            } catch (IOException e) {
                System.out.println(e.toString());
            } finally {
                try {
                    if (client != null) {
                        client.close();
                    }
                } catch (IOException e) {}
            }
        }
    }
      

  3.   

    发送电子邮件,可以使用apache的javamail包。 我实现过Web版的。
        换成Swing版的,也很容易,就是提供按钮
      

  4.   

    不需要使用socket的
         这些东西都屏蔽掉了。  注意发送邮件的中文编码问题。
      

  5.   

    可我们的作业就是让用swing实现, 不可以使用javamail。 
    我想要的是 public static String receiver = "输入邮件地址";
    这个邮件地址不在程序中直接输入, 而是在运行时的图形界面中输入
    还有邮件主题也是在运行时输入。没人能帮帮我吗???