服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

怎 样 在 applet 中 发 email


   为 了 得 到 反 馈, 我 们 在 设 计 主 页 时 经 常 将 自 己 的email 地 址 嵌 在 主 页 上 以 便 读 者 与 我 们 联 系。 其 中 最 普 遍 的 作 法 是 利 用html 语 言 加 上:
  
   feedback to author! 这 样 作 的 缺 点 是 无 论 读 者 使 用 的 是internet explorer 还 是netscape navigator, 在 点 击 作 者 地 址 时 都 需 另 打 开 一 个 写 作 窗 口, 使 主 页 窗 口 被 覆 盖。 这 样 读 者 在 写 信 时 看 不 到 原 文 的 内 容 也 不 易 进 行 引 用。 笔 者 设 计 了 一 个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, 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, hotjava browser 1.0 环 境 下 调 试 通 过。 有 兴 趣 的 读 者 还 可 加 上 与smtp 服 务 器 通 信 时 的 出 错 例 程。

扫描关注微信公众号