应用applet必须要了解applet是在怎样的一个环境下运行的,由于安全性的考虑,并不是所有的application都可以直接改装成applet就可以跑得。
像你这个问题,要发送邮件,作为application他会用到本地的网络连接资源,那么通常有两种方式来处理,一是对applet进行数字签名;二是对applet配置安全策略。
当然,这是一种估计你的程序存在这个问题,具体要看你的applet到底跑出了什么错误。
像你这个问题,要发送邮件,作为application他会用到本地的网络连接资源,那么通常有两种方式来处理,一是对applet进行数字签名;二是对applet配置安全策略。
当然,这是一种估计你的程序存在这个问题,具体要看你的applet到底跑出了什么错误。
这个是我的程序清单:我在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);
}}
".java.policy"比如你连接数据库的程序,也是要用到socket端口的,所以这些你如果用到applet的话,就都需要授权的。下面的文章希望能够给你些帮助。
http://www.csdn.net/develop/read_article.asp?id=19931