socket = new Socket(smtp.getText(), 25);
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
        send(null);
        send("HELO "+java.net.InetAddress.getLocalHost().getHostName());
        send("AUTH LOGIN");
        send(Base64.encode("n71929688"));
        send(Base64.encode("12071208"));
        send("MAIL From:"+from.getText());
        send("RCPT To:"+to.getText());
        send("DATA");
        String a = "\r\n.\r\n";
        
        out.println("Content-Type: text/plain;charset="+"GB2312");
        out.println("adslfjlasjdfalsdfj");        out.flush();
        send(a);
 public void send(String msg) throws IOException
    {
        if(msg!=null)
        {
            out.println(msg);
            out.flush();
        }
        
        
        String line = in.readLine();
        if(line != null)
            state.setText(state.getText()+line+"\n");
    }这是相关代码

解决方案 »

  1.   

    呵呵! 邮件协议规定,最前面的是header,里面是subject,datetime等内容,然后以一个空行标志主体内容的开始然后才是.结束,比如subject:121212121212body
    .
    你的那个只输出了header部分,你应该再看看协议
      

  2.   

    给你看看一个邮件的内容From: [email protected]
    To: [email protected]
    Reply-To: =?utf-8?Q?CSDN=E5=8D=9A=E5=AE=A2?= <[email protected]>
    Date: 7 May 2008 21:51:17 +0800
    Subject: =?gb2312?Q?=BB=D8=B8=B4:Java=B6=E0=CF=DF=B3=CCSocket=B2=D9=D7=F7=B2=C2=CA=FD=D3=CE=CF=B7=D1=F9=C0=FD?=
    Content-Type: text/html; charset=gb2312
    Content-Transfer-Encoding: quoted-printable
    Message-Id: <[email protected]>=C4=FA=B7=A2=B1=ED=B5=C4=D6=F7=CC=E2=D3=D0=D0=C2=B5=C4=C6=C0=C2=DB:
    =C6=C0=C2=DB=B1=EA=CC=E2:=BB=D8=B8=B4:Java=B6=E0=CF=DF=B3=CCSocket=B2=D9=D7=去前面是header, 中间是空行分开