| 为了得到反馈,我们在设计主页时经常将自己的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("QUIT"); }
catch(Exception e) { System.out.println("Error " + e); } } } //Javamail
以上程序在Win95,JDK 1.1.2,Hotjava Browser 1.0环境下调试通过。有兴趣的读者还可加上与SMTP服务器通信时的出错例程。
///////////////////////////////////////////// 天津大学电子系 范仲方(zffan@public.tpt.tj.cn)
|