| |
为了得到反馈,我们在设计主页时经常将自己的email地址嵌在主页上以便读者与我们联系。其中最普遍的作法是利用html语言加上: feedbacktoauthor!这样作的缺点是无论读者使用的是internetexplorer还是netscapenavigator,在点击作者地址时都需另打开一个写作窗口,使主页窗口被覆盖。这样读者在写信时看不到原文的内容也不易进行引用。笔者设计了一个javaapplet可嵌在主页上,解决了这个问题,同时使没有email地址的人也可反馈信息。源程序如下: import java.awt.*; import java.applet.*; import java.net.*; import java.io.*;
public class javamail extends applet {
private int smtp_port = 25; //邮件服务器缺省端口号 private string appletsource = "202.99.96.140"; //作者邮件服务器ip private textarea msgarea; private textfield senderfield, recipientfield, hostfield;
public void init() {
setlayout(new borderlayout()); panel fields = new panel(); fields.setlayout(new gridlayout(3, 1)); panel recpanel = new panel(); recpanel.setlayout(new gridlayout(2, 1)); recpanel.add(new label("recipient")); recipientfield = new textfield("zffan"); // 作 者 邮 件 服 务 器 用 户 名 recpanel.add(recipientfield); fields.add(recpanel); panel sendpanel = new panel(); sendpanel.setlayout(new gridlayout(2, 1)); sendpanel.add(new label("sender")); senderfield = new textfield("your name"); // 由 读 者 填 其 用 户 名 sendpanel.add(senderfield); fields.add(sendpanel); panel hostpanel = new panel(); hostpanel.setlayout(new gridlayout(2, 1)); hostpanel.add(new label("host")); hostfield = new textfield("yourcompany.com"); // 由 读 者 填 其 邮 件 服 务 器ip hostpanel.add(hostfield); fields.add(hostpanel); add("north", fields); msgarea = new textarea(); add("center", msgarea); add("south", new button("send")); }
public boolean handleevent(event e) {
if (e.id == event.window_destroy) system.exit(0); return super.handleevent(e); }
public boolean action(event e, object arg) {
if (arg.equals("send")) sendmsg(senderfield.gettext(), recipientfield.gettext(), hostfield.gettext()); else return super.action(e, arg); return true; }
private void sendmsg(string sender, string recipient, string senderhost) {
try { // 与 邮 件 服 务 器 通 信
socket s = new socket(appletsource, smtp_port); printstream out = new printstream(s.getoutputstream()); msgarea.selectall(); out.println("helo " + senderhost); //邮件服务器不认证读者所输smtp是否正确 out.println("mail from: " + sender); out.println("rcpt to: " + recipient); out.println("data"); out.println(msgarea.getselectedtext()); out.println("."); out.println("qu99v"); }
catch(exception e) { system.out.println("error " + e); } } } //javamail
以上程序在win95,jdk 1.1.2,hotjava browser 1.0环境下调试通过。有兴趣的读者还可加上与smtp服务器通信时的出错例程。
///////////////////////////////////////////// 天津大学电子系 范仲方(zffan@public.tpt.tj.cn)
|
|