配置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病毒 (5064篇文章)
- 手机病毒揭密 (3624篇文章)
- 病毒专栏 (2575篇文章)
- Java环境安装配置 (5627篇文章)
- 中小企业防病毒解决方案 (6022篇文章)
- 电子邮件安全 (8332篇文章)
- Java编程开发手册 (8276篇文章)
- 邮件服务器专题 (7210篇文章)
- 安全频道 (11246篇文章)
- Java与其他集成开发篇 (181篇文章)
- 掌握JAVA的标准 (26次浏览)
- JAVA编译时的常见错误 (25次浏览)
- Ubuntu Linux系统中Java环境的安装配置 (25次浏览)
- 如何在MyEclipse快速搭建Hibernate应用 (15次浏览)
- Nhibernate与代码生成器介绍 (14次浏览)
- 高手为你分析类的设计方法 (12次浏览)
- Java中利用反射实现类的动态加载 (12次浏览)
- JAVA运行时的产间错误 (11次浏览)
- J2SE综合:浅谈java程序发布之 jre 篇 (11次浏览)
- Java敏捷开发技巧之消除代码异味 (10次浏览)



