怎样在APPLET中发EMAIL

发表于:2007-07-14来源:作者:点击数: 标签:
为了得到反馈,我们在设计主页时经常将自己的email地址嵌在主页上以便读者与我们联系。其中最普遍的作法是利用HTML语言加上: FeedbacktoAuthor!这样作的缺点是无论读者使用的是InternetExplorer还是NetscapeNavigator,在点击作者地址时都需另打开一个写作
为了得到反馈,我们在设计主页时经常将自己的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)

原文转自:http://www.ltesting.net