频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Java设计防病毒电子邮件程序之代码

来源:天极网 作者:陶刚编译 出处:巧巧读书 2006-06-26 进入讨论组
上一页 1 2 3 4 5 6 7 8 9 下一页 

  配置GUI

  下面的代码配置了GUI,它多个组件放在页面上,设置页面的大小,并使页面可视。

add(startButton);
add(textArea);
textArea.setText("");
setLayout(new FlowLayout());
setTitle("Copyright 2004, R.G.Baldwin");
setBounds(274,0,400,400);
//使GUI可视
setVisible(true);
}//构造函数结束

  上面的代码同时表明VirPro01a类的构造函数的结束。

  VirPro01b程序

  VirPro01b程序包含大量的与前面程序不同的信息。

  前面提到,这是设计用于一起使用的两个程序之一,它们与良好的病毒扫描程序一起防止病毒感染电子邮件收件箱。

  这个程序需要在VirPro01a运行之后,病毒检测程序已经确保了VirPro01a的输出不包含病毒(或者包含病毒的文件从工作文件夹中删除了),才能运行。

  这个程序把电子邮件消息转发到秘密的电子邮件帐号。在我的系统中,这个过程相对较慢,使用线缆调制解调器,大约四秒钟转发一条消息。

  这个程序在WinXP下使用SDK 1.4.2测试通过。

  forwardEmailMsg方法

  我的解释将从该程序中最复杂的部分开始。这个方法叫做forwardEmailMsg。其中的一部分复杂性来自它对于没有正式说明文件的Sun提供的一个类(sun.net.smtp.SmtpClient)的大量依赖。这是发送电子邮件消息的一个非常有用的类,被包含在SDK 1.4.2中。但是,它好像没有被包含在SDK 1.4.2文档中,希望在这个类的文档中找到有用的消息非常困难。

  文档在哪儿?

  我能够找到的最好的文档是下面的链接http://swig.stanford.edu/pub/java/javadoc/sun/net/smtp/SmtpClient.html。上面的Web站点对于这个类的操作描述是:“这个类实现了SMTP客户端。为了发送邮件,你需要建立一个新的SmtpClient,调用‘to’方法添加目的地,调用‘from’方法为发送者命名,调用startMessage返回写入消息(带有RFC733头信息)的流,最后关闭SmtpClient。”除了这些简短的描述之外,几乎没有其它有用的信息。但是,它已经提供了至关重要的信息,例如方法的名称、参数类型、返回类型等等。

  一些警告

  如果你在Web上搜索这个类,你将找到大量的使用它的警告信息,其中主要的是Sun并不支持它。如果你在设计一个需要长期支持和维护的产品,支持信息可能是涉及要害的。但是,我编写的这个程序只供自己使用以防护电子邮件病毒。因此,我不关心长期的支持和维护。这个类容易使用,因此它是个很好的选择。

  ReadLines方法

  ForwardEmailMsg方法使用了另一个叫做readLines的方法。因此,在解释forwardEmailMsg方法之前我将解释readLines方法。ReadLines方法的开始如下:

private String readLines(String pathFileName,
String firstLine,String lastLine){

  该方法的参数

  该方法接收下面三个String(字符串)参数:

  · pathFileName
  
  · firstLine

  · lastLine

  设计该方法的主要目的是让你能够从文本文件中提取连续的文本行,从第一行开始的内容到希望得到的最后一行为止。

  ReadLines方法从文本文件中读取和保存文本行,它从firstLine定义的行开始,以lastLine定义的行结束。如果lastLine为null,数据就一直保存到文件结束;如果firstLine为null,数据保存为文件中开始的第一行。

  来自文件中的文本行保存的方式为:把它们连接成一个String对象,在每一行的结束向字符串插入newline(新行标识)。文件的名称和路径由pathFileName指定。

  该方法的剩余部分

  ReadLines方法剩余的代码如下:

StringBuffer strBuf = new StringBuffer();
try{
 BufferedReader inDataMsg = new BufferedReader(new FileReader(pathFileName));
 String data;
 boolean isSave = false;
 while((data = inDataMsg.readLine())!= null){
  if(((firstLine == null) ||(data.startsWith(firstLine))) && (isSave == false)){
   isSave = true;
  }// if结束
  if(isSave){ strBuf.append(data + "\n");
 }// if结束
 if((lastLine != null) && (data.startsWith(lastLine))){
  break;//不需要读取更多信息了
 }// if结束
}// while循环结束
inDataMsg.close();//关闭文件
}catch(Exception e){e.printStackTrace();}
return new String(strBuf);
}//读取数据行结束

  消息的格式

  为了使我设计的readLines更加通用,我计划把它设计为从未处理的消息中提取文本行,因此看一个消息的例子对你来说可能是有益的。

  下图显示了一个为了演示目的而发送给自己的未处理的简单的电子邮件消息文本(请注意,我在文本中插入和大量的行分隔符,这样才能显示如下)。

Return-Path: <Baldwin@DickBaldwin.com>
Received: from ms-smtp-01-eri0.texas.rr.com
(ms-smtp-01.texas.rr.com [24.93.47.40])
by omnistarhost.com (8.11.6/8.11.6)
with ESMTP id i1G1PeX29829
for <baldwin@dickbaldwin.com>; Sun,
15 Feb 2004 19:25:40 -0600
Received: from DickBaldwin.com
(cs24339-166.austin.rr.com [24.243.39.166])
by ms-smtp-01-eri0.texas.rr.com
(8.12.10/8.12.7) with ESMTP id i1G1JHLc003760
for <baldwin@dickbaldwin.com>;
Sun, 15 Feb 2004 19:19:20 -0600 (CST)
Message-ID: <40301A94.6070504@DickBaldwin.com>
Date: Sun, 15 Feb 2004 19:19:16 -0600
From: Richard Baldwin <Baldwin@DickBaldwin.com>
Reply-To: Baldwin@DickBaldwin.com
User-Agent: Mozilla/5.0 (Windows; U; Windows
NT 5.1; en-US; rv:1.4) Gecko/20030624
Netscape/7.1 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: baldwin@dickbaldwin.com
Subject: A test msg to illustrate messagestructure
Content-Type: text/plain;
charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
X-MailScanner-Information: Please
contact the ISP for more information
X-MailScanner: Found to be clean
Status:

This is a test message.
--
Richard G. Baldwin (Dick Baldwin)
Home of Baldwin's on-line Java Tutorials
http://www.DickBaldwin.com

Professor of Computer Information Technology
Austin Community College
(512) 223-4758 or (512) 250-8682
mailto:Baldwin@DickBaldwin.com
http://www.austincc.edu/baldwin/

  在图1中我使用加亮显示了两行。文章地址: http://www.qqread.com/java/2006/06/w655129002.html 更多文章 更多内容请看QQ病毒手机病毒揭密病毒专栏专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 7 8 9 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章