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

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

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

  发送消息

  下面的代码调用SmtpClient对象上的closeServer方法:

//关闭流并发送消息
smtp.closeServer();
return true;
}catch( Exception e ){
 System.out.println("\n" + e);
 System.out.println("Forwarding email");
 Toolkit.getDefaultToolkit().beep();
 try{
  Thread.currentThread().sleep(300);
 }catch(Exception ex){
 System.out.println(ex);
}// catch结束
Toolkit.getDefaultToolkit().beep();
return false;
}// catch结束
}//end forwardEmailMsg

  这段代码会引起消息被发送到接收者,尽管前面提到的文档中没有明确地说明。

  成功时返回true

  如果上面的代码返回true就表明调用的方法发送了消息,并且现在可以从服务器删除该消息,从工作文件夹移动到文档文件夹了。

  异常

  如果forwardEmailMsg方法中调用的任何SmtpClient方法产生了异常,它都会被代码中的catch代码块捕捉到。

  Catch代码块输出一些诊断信息、提醒用户并返回False。它表明调用方法并没有转发消息,不能从公共电子邮件服务器上删除它,不能移动到文档文件夹中。

  重新运行VirPro01b来试图发送消息可能有用,也可能没有用,这依赖于异常的具体种类。如果引起异常的是严重的网络拥塞而导致的超时,那么重新运行程序发送消息是很好的选择。对于其它一些更严重的问题,重新运行可能不会成功,应该在前面提到的文本编辑器中检查消息。

  MoveFile方法

  在进入VirPro01b类的构造函数的细节前我还要讨论另一个有用的方法。下面的代码完整地显示了moveFile方法:

private void moveFile(String pathFileName,String archivePath){
 String fileName = pathFileName.substring(
 pathFileName.lastIndexOf('/') + 1);
 String archivePathFileName =archivePath + fileName;
 boolean moved =new File(pathFileName).renameTo(
 new File(archivePathFileName));
 if(!moved)System.out.println("Unable to move " + new File(pathFileName) + "\nto " + new File(archivePathFileName));
}// moveFile方法结束

  输入参数

  这个方法接收两个输入参数:

  · PathFileName(文件名和路径)——文件的名称和当前位置。

  · ArchivePath(文档路径)——文件的目的地。

  这个方法用于把消息文件从工作文件夹移动到文档文件夹。它把文件从pathFileName指定的当前位置移动到archivePath指定的新位置。

  如果操作成功,File类的reName方法将返回true,否则返回false。例如,如果在目标文件夹中已经存在一个同名的文件,操作将返回false,并且上面的代码将输出一个消息表明移动操作没有成功。

  VirPro01b类

  下面的代码是VirPro01b的开始部分,包括一些实例变量的声明和初始化。其中一些注释表明了实例变量的使用方法,因此我没有进一步解释它们。

class VirPro01b extends Frame{
 //下面是程序启动时保密电子邮件提供的ID它是作为命令行参数提供的
 String recipient;
 //下面是存储等待病毒扫描和转发的消息文件的本地文件夹。
 //你可以改变它。
 String dataPath = "./Messages/";
 //下面是存储扫描后并转发到秘密电子邮件帐号的消息的本地文件夹。
 //从公共电子邮件服务器上删除后它们被自动地移动到这个文件夹。
 //你可能需要周期性地清除这个文件夹。
 String archivePath = "./Archives/";
 //下面是程序用于不同目的的工作变量。
 BufferedReader inputStream;
 PrintWriter outputStream;
 Socket socket;
 String pathFileName;
 Vector msgToDelete = new Vector();

  我要提醒你,你可以通过简单地改变dataPath和archivePath的初始值来改变工作文件夹和文档文件夹的位置和名称。(在运行程序之前要确保新的文件夹已经建立了。)

  Main方法

  Main方法如下所示:

public static void main(String[] args){
 if(args.length != 5){
  System.out.println("Usage: java VirPro01b " + "pubServer userName password " + "secretServer smtpServer");
  System.exit(0);
 }// if结束
 new VirPro01b(args[0],args[1],args[2], args[3],args[4]);
}// main结束

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