怎 樣 在APPLET 中 發EMAIL (轉)

worldblog發表於2007-12-05
怎 樣 在APPLET 中 發EMAIL (轉)[@more@]天 津 大 學 電 子 系 範 仲 方
zffan@public.tpt.tj.cn

--------------------------------------------------------------------------------


為 了 得 到 反 饋, 我 們 在 設 計 主 頁 時 經 常 將 自 己 的e 地 址 嵌 在 主 頁 上 以 便 讀 者 與 我 們 聯 系。 其 中 最 普 遍 的 作 法 是 利 用HTML 語 言 加 上:
Feeack to Author! 這 樣 作 的 缺 點 是 無 論 讀 者 使 用 的 是Inte Explorer 還scape Navigator, 在 點 擊 作 者 地 址 時 都 需 另 打 開 一 個 寫 作 窗 口, 使 主 頁 窗 口 被 覆 蓋。 這 樣 讀 者 在 寫 信 時 看 不 到 原 文 的 內 容 也 不 易 進 行 引 用。 筆 者 設 計 了 一 個 APPLET 可 嵌 在 主 頁 上, 解 決 了 這 個 問 題, 同 時 使 沒 有 地 址 的 人 也 可 反 饋 信 息。 源 程 序 如 下:

import java.awt.*;
import java.applet.*;
import java.net.*;
import java.io.*;

public class Javamail extends Applet {

private int SMTP_PORT = 25;
//預設埠號
private String applet = "202.99.96.140";
//作者
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, 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.All();
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, 1.1.2, Hotjava Browser 1.0 環 境 下 調 試 通 過。 有 興 趣 的 讀 者 還 可 加 上 與SMTP 服 務 器 通 信 時 的 出 錯 例 程。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988591/,如需轉載,請註明出處,否則將追究法律責任。

相關文章