荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 在Java Applet中发Email
发信站: BBS 荔园晨风站 (Thu Jan 21 23:01:32 1999), 转信


在设计主页时,为了得到访问用户的反馈信息,我们经常将自己的Ema
il地址嵌在主页上。其中最常用的做法是利用HTML语言:
    <A HREF="mailto:someone@somecompany.com">Feedback to Aut
hor!</A>
    但是,这样做的缺点是,无论读者使用的是Internet Explorer,还
是Netscape Navigatr ,在点击作者地址时都需另打开一个写作窗口,
使主页窗口被覆盖。这样读者在写信时看不到原文的内容,也不易进
行引用。笔者设计了一个Java Applet可嵌在主页上,解决了这个问题
,同时使没有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, hostFie
ld;
      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.getTex
t(), hostField.gete xt());
      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.getOutputStrea
m());
          MsgArea.selectAll();
          out.println("HELLO " + 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
    以上程序在Windows 95、JDK1.1.2、Hotjava Browser 1.0环境
下调试通过。有兴趣的读者还可加上与SMTP服务器通信时的出错例程


--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店