发送消息
下面的代码调用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病毒 (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次浏览)



