為了得到反饋,我們在設計主頁時經常將自己的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,JDK1.1.2,HotjavaBrowser1.0環境下調試通過。有興趣的讀者還可加上與SMTP服務器通信時的出錯例程。