import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;import java.util.*;
import javax.swing.JOptionPane;class Twin extends Frame implements ActionListener{

TextField text1,text2,namet,passwordt,sendt,shout,zhut;
Label label1,label2,name,password,send,shou,zhu;
Checkbox check;
TextArea neirong;
Button button1,button2;
//定义Socket
Socket mycocket;

Twin(){

FlowLayout flow=new FlowLayout();
flow.setAlignment(FlowLayout.LEFT);
setLayout(flow);
label1=new Label("发送邮件服务器:");
label1.setBounds(0,0,20,20);
add(label1);


text1=new TextField("smtp.163.com");
text1.setPreferredSize(new Dimension(100,20));
add(text1);

check=new Checkbox();
add(check);

label2=new Label("是否需要认证");
add(label2);

name=new Label("用户名:");
add(name);

namet=new TextField();
namet.setPreferredSize(new Dimension(100,20));
add(namet);

password=new Label("密码:");
add(password);

passwordt=new TextField();
passwordt.setEchoChar('*');
passwordt.setPreferredSize(new Dimension(100,20));
add(passwordt);

send=new Label("发件人:");
add(send);

sendt=new TextField();
sendt.setPreferredSize(new Dimension(100,20));
add(sendt);

shou=new Label("收件人:");
add(shou);

shout=new TextField("[email protected]");
shout.setPreferredSize(new Dimension(100,20));
add(shout);

zhu=new Label("主题:");
add(zhu);

zhut=new TextField();
zhut.setPreferredSize(new Dimension(100,20));
add(zhut);

neirong=new TextArea();
neirong.setPreferredSize(new Dimension(300,100));
add(neirong);

button1=new Button("发送");
button1.addActionListener(this);
add(button1);

button2=new Button("退出");
add(button2);

setBounds(100,100,350,400);
 setVisible(true);
 validate();

}

public void actionPerformed(ActionEvent e){

if(e.getSource()==button1){
//`判断各个内容是否为空============================
if(text1.getText().length()==0 || namet.getText().length()==0 || passwordt.getText().length()==0 || sendt.getText().length()==0 || shout.getText().length()==0 || zhut.getText().length()==0 || neirong.getText().length()==0){
    
JOptionPane.showMessageDialog(this,"请检查各个输入框中的内容不为空!");

}else{
sendMail(text1.getText()," "," "," ",zhut.getText(),neirong.getText(),"");
 

}





}


}
//====================================================发信函数==  
public void sendMail(String mailServer, String shou,String name,String password,String zhu,String nei,String send) {
   try {
      //有Socket打开25端口
      Socket s = new Socket(mailServer, 25);
      //缓存输入和输出
      BufferedReader in = new BufferedReader
          (new InputStreamReader(s.getInputStream(), "8859_1"));
      BufferedWriter out = new BufferedWriter
          (new OutputStreamWriter(s.getOutputStream(), "8859_1"));
      //发出“HELO”命令,表示对服务器的问候
      send(in, out, "HELO theWorld");
      //告诉服务器我的邮件地址,有些服务器要校验这个地址
      send(in, out, "MAIL FROM: <[email protected]>");
      //使用“RCPT TO”命令告诉服务器解释邮件的邮件地址
      send(in, out, "RCPT TO: " + shou);
      //发送一个“DATA”表示下面将是邮件主体
      send(in, out, "DATA");
      //使用Subject命令标注邮件主题
      send(in,out, "Subject:"+zhu);
      //使用“From”标注邮件的来源
      send(in,out, "From: riverwind <[email protected]>");
      send (in,out, "\n");
      //邮件主体
      send(in,out, nei);
      send(in,out, "\n.\n");
      //发送“QUIT”端口邮件的通讯
      send(in, out, "QUIT");
      s.close();
      }
   catch (Exception e) {
      e.printStackTrace();
      }
   }
 public void send(BufferedReader in, BufferedWriter out, String s) {
   try {
      out.write(s + "\n");
      out.flush();
      JOptionPane.showMessageDialog(this,s);
      s = in.readLine();
    JOptionPane.showMessageDialog(this,s);
      }
   catch (Exception e) {
      e.printStackTrace();
      }
   } //==============================================================
}
public class email{

public static void main(String args[]){




Twin win1=new Twin();





}



}
以上是我自已结合网上内容做的,但是怎么都不成功,请大侠门帮我解决一下,还要搞个用户认证,不知道要怎么搞,急哦!!!!