应用applet必须要了解applet是在怎样的一个环境下运行的,由于安全性的考虑,并不是所有的application都可以直接改装成applet就可以跑得。
像你这个问题,要发送邮件,作为application他会用到本地的网络连接资源,那么通常有两种方式来处理,一是对applet进行数字签名;二是对applet配置安全策略。
当然,这是一种估计你的程序存在这个问题,具体要看你的applet到底跑出了什么错误。

解决方案 »

  1.   

    到底有没有谁可以帮我解决啊!
    这个是我的程序清单:我在JDK中编译是没有错误的!现在我就是要把他利用网页的形式显示出来!请大家帮我来看看啊!
    /////sendmail.javaimport java.io.* ;
    import java.awt.* ;
    import java.net.*  ;
    import java.applet.*;
    import java.awt.event.*;
    import javax.swing.*;
    import   java.util.*;
    public class sendmail extends Frame {
      PrintStream ps = null       ;
      DataInputStream dis = null;
      String strmailfrom ,strmailto,strsubject,strbody;
      String strbodyend ="\r\n.\r\n";
      TextArea taletter,tastatus;
      TextField tfmailfrom ,tfmailto,tfsubject;
      Label lbmailfrom ,lbmailto,lbsubject,lbletter,lbstatus;
      Button btini,btsend;
      Socket smtp = null;
      public void send(String str) throws IOException
      {
      ps.println(str);
      ps.flush();
      tastatus.appendText("jave send:" + str+"\n");
      }
      public void receive() throws IOException
      {
      String readstr = dis.readLine();
      tastatus.appendText("jave received" + readstr + "\n");
       }
        public static void main(String args[])
      {
      sendmail sm = new sendmail();
      sm.show(true);;
      }
      public sendmail()
      {
       setLayout(new FlowLayout());
       lbmailfrom = new Label("从地址:");
       tfmailfrom =new TextField(50);
       lbmailto =new Label("发送到:");
       tfmailto = new   TextField(50);
       lbsubject = new Label("标题:");
       tfsubject = new TextField(50);
       lbletter = new Label("信件内容:");
       lbstatus = new Label("发送邮件状态:");
       add(lbmailfrom);
       add(tfmailfrom);
       add(lbmailto);
       add(tfmailto);
       btsend =new Button("发送");
       btini = new Button("初始化");
       tastatus = new TextArea(8,50);
       tastatus.setEditable(false);
       taletter = new TextArea(10,50);
       add(lbstatus);
       add(tastatus);
       add(taletter);
       add(btsend);
       add(btini);
       add(lbsubject);
       add(tfsubject);
       setTitle("发送邮件");
       resize(600,600);  }
      public boolean action(Event evt,Object obj)
      {
      if( evt.target == btsend)
      {
      tastatus.appendText("now start to send.\n");
      try{
         String loc = InetAddress.getLocalHost().getHostName();
         send("HELO"+"163.net");
         receive();
         send("MAIL From:" + strmailfrom);
         receive();
         send("RECP To:" + strmailto);
         receive();
         send("DATA");
         receive();
         send("SUBJECT" +  strsubject);
         receive();
         send(strbody + strbodyend);
         receive();
         smtp.close();
         }catch(IOException e){tastatus.appendText("err sending!\n");}
      tastatus.appendText("send comolete!\n");
      }
      else if (evt.target == btini)
      {
      tastatus.appendText("now start to connect");
      try{
          smtp = new Socket("smtp.163.net",25);
          OutputStream os = smtp.getOutputStream();
          ps = new PrintStream(os);
          InputStream is = smtp.getInputStream();
          dis = new DataInputStream(is);
          tastatus.appendText("connect complete\n");
          }catch(IOException e){tastatus.appendText("err conneted!\n");}  strmailfrom = tfmailfrom.getText();
      strmailto = tfmailto.getText();
      strsubject = tfsubject.getText();
      strbody = taletter.getText();
      }
      return super.action(evt,obj);
      }
    public boolean handleEvent(Event e){
     if(e.id == Event.WINDOW_DESTROY){ System.exit(0); }
       return super.handleEvent(e);
      }}
      

  2.   

    我在初学java的时候也写过类似的东西,后来明白了applet的东西真正跑起来是要受到很多限制的,像你要发信,那么你必须得到操作系统的授权连接邮件服务器的25端口,通常你可以构造一个这样的策略文件,让用户放到他的用户目录下。并且命名为
    ".java.policy"比如你连接数据库的程序,也是要用到socket端口的,所以这些你如果用到applet的话,就都需要授权的。下面的文章希望能够给你些帮助。
    http://www.csdn.net/develop/read_article.asp?id=19931
      

  3.   

    可能大家还不明白我的意思吧!我现在这个sendmail.java已经在jdk下测试通过了!能够运行!现在的目的就是要改写成在网页中能够显示的applet程序?就算是把界面显示出来也行啊!现在就是我在网页上根本就看不到我在DOS下编译出来的那个界面啊?
      

  4.   

    extends Applet not extends Frame !!!