你有些不满 打电话告诉你的朋友 他发送了一个带病毒的消息给你 你的朋友可能并非有意地给你发送病毒 很可能的情况是 你的朋友的计算机已经被病毒感染了 该病毒通过给电子邮件地址薄中的每个人发送病毒消息来复制自己 即使来自最可信的朋友的消息也是不可信的
很多电子邮件客户端显示消息的方式看起来好像是磁盘上的目录包含文件的显示方式 这些电子邮件允许你通过把消息存储在文件夹(其中一个叫收件箱)中来组织消息 形象地说 每个消息是单独的文件 磁盘上的文件夹或目录中包含了一组相关的文件
但是很多电子邮件客户端的表象可能使人误解 很多电子邮件客户端程序把几组相关的消息合并到一个文件中 例如 Netscape Communicator在磁盘上就没有叫收件箱的文件夹 其实 它只有一个叫做收件箱的文件 而你的收件箱中的所有消息都放在那个文件中
在配置病毒检测程序的 文件系统实时保护 的时候 它有下面一些的选项
当检测到病毒时的主要 *** 作
· 清除文件中的病毒
· 隔离被感染的文件
· 删除被感染文件
· 不处理(仅仅记录)
如果主要 *** 作失败
· 隔离被感染的文件
· 删除被感染的文件
· 不处理(仅仅记录)
在两种情形中 我都把病毒检测程序设置为第一种选择(这是默认的配置) 因此 如果病毒检测程序不能清除我的收件箱文件中的病毒 它就使用自己的权限隔离整个文件 不幸的是 这引起了收件箱中当前所有的消息都不能访问
假设不知何故你在收到包含病毒的消息的时候 禁止病毒检测程序把收件箱文件放入隔离区(也许在这个时候关闭了它) 你已经知道不应该打开不熟悉的附件了 在查看收件箱中的消息主题的时候 你注意到了带有病毒的可疑消息 你没有打开它 只是简单地删除了该消息
至少对于Netscape Communicator(可能还有其它产品)的用户来说 当你 删除 消息的时候 它并没有被真正地从系统中删除 其实 它只是被移动到另一个文件夹(文件)中了 典型的情况下它叫做垃圾箱(Trash)
如果你把增量备份文件副本放在磁盘上 那么下次执行整个磁盘扫描的时候 可能发现该备份文件中包含病毒 根据几种因素 这样的增量备份文件可能会 也可能不会被认为对于恢复目的是没有价值的 如果某个增量备份文件被认为是没有价值的 那么整个备份计划的实施都没有价值
你很幸运 可以消除这种情形 其解决方法就是清除电子邮件客户端中的垃圾箱 并启动一个全新的完整备份序列
我告诉你这些信息是为了得到一个结论 电子邮件病毒可能更麻烦 它不仅会引起你丢失重要的业务电子邮件消息 还可能在从备份文件中恢复业务数据的过程中引起你丢失大范围的多种业务信息 (由于这个原因 我从来不做增量备份 即使它的速度快得多 每次备份的时候 我保存自从上次完全备份后的改变过的全部文件 因此 为了完全恢复系统只需要最先的和最后的完全备份 此外 我经常扫描备份文件以消除病毒 如果我发现最后的备份文件中包含了病毒 我就从磁盘上删除该病毒 然后再进行一次完全备份 )
上面谈到 不允许带有病毒的电子邮件进入你的电子邮件数据结构中是极其重要的 本文的目的是为你演示一种实现该目标的方法
我将要描述的计划将非常简单并且很便宜 它所需要的资源由三个计算机程序和两个电子邮件帐号(一个公共的 一个私有的)组成
(私有帐号的意思是只有你知道的电子邮件帐号 你不能把该电子邮件地址泄漏给任何人 包括最好的朋友 你的秘密的电子邮件地址没有出现在世界上的任何计算机的任何地址薄中是极其重要的 这对于你喜欢阅读电子邮件消息的受信任的朋友的地址薄也是正确的 )
*** 作计划
*** 作过程是非常简单的 现在让我们把这两个程序叫做程序A和程序B 你一定不要使用电子邮件客户端从公共电子邮件帐户中下载电子邮件消息 你应该运行程序A下载消息
每个消息一个文件
当你运行程序A的时候 它将下载服务器上所有的消息 并把每个消息写入磁盘上的特定文件夹中的不同的文件中 我们需要注意的是 消息彼此还是分开的 某个消息中的病毒不会破坏其它的消息
扫描消息文件
下一步使用病毒检测程序扫描文件夹中的所有消息文件 清除或移走包含病毒的消息
转发剩余的清洁的消息
下一步是运行程序B 它把剩余的消息转发到秘密的电子邮件帐号 如果执行了病毒检测 所有消息都应该是不含病毒的 这个过程比上面两个过程的时间长一些
无需等待
lishixinzhi/Article/program/Java/gj/201311/27473import java.util.Properties
import java.util.Date
import javax.mail.Session
import javax.mail.Message
import javax.mail.Transport
import javax.mail.internet.MimeMessage
import javax.mail.internet.InternetAddress
public class HelloWorldJavaMail {
public static void main(String[] args) {
try {
Properties props = System.getProperties()
props.put("mail.smtp.host","xxx.xxx.xxx.xxx")
Session session=Session.getDefaultInstance(props,null)
MimeMessage mimeMessage=new MimeMessage(session)
mimeMessage.setFrom(new InternetAddress("xx@xx.xx","姓名","gb2312"))
mimeMessage.setRecipients(Message.RecipientType.TO,"xx@xx.xx")
mimeMessage.setSubject("Hello World JavaMail","gb2312")
mimeMessage.setText("<h1>Hello World JavaMail</h1>","gb2312")
mimeMessage.setHeader("Content-Type","text/html")
mimeMessage.setSentDate(new Date())
Transport.send(mimeMessage)
} catch (Exception e) {
e.printStackTrace()
}
}
}
2。收信
import javax.mail.*
import javax.mail.internet.*
import java.util.*
public class HelloWorldPOP {
public static void main(String args[]) {
try {
String host="xxx.xxx.xxx.xxx"
String user="xxxxxx"
String password="xxxxxx"
Session session = Session.getDefaultInstance(System.getProperties(), null)
Store store = session.getStore("pop3")
store.connect(host, -1, user, password)
Folder folder = store.getFolder("INBOX")
folder.open(Folder.READ_ONLY)
int totalMessages = folder.getMessageCount()
if (totalMessages == 0) {
System.out.println("没有邮件")
folder.close(false)
store.close()
return
}
Message[] messages = folder.getMessages()
for (int i = 0i <messages.lengthi++) {
showMessage(messages[i])
}
folder.close(false)
store.close()
} catch (Exception e) {
e.printStackTrace()
}
}
public static void showMessage(Message m) throws Exception {
Address[] a
if ((a = m.getFrom())!=null) {
for (int j = 0j <a.lengthj++) {
System.out.println("送信人: " + MimeUtility.decodeText(a[j].toString()))
}
}
if ((a = m.getRecipients(Message.RecipientType.TO))!=null) {
for (int j = 0j <a.lengthj++) {
System.out.println("收信人: " + MimeUtility.decodeText(a[j].toString()))
}
}
System.out.println("主体: " + m.getSubject())
Date d = m.getSentDate()
System.out.println("日期: " + (d!= null ? d.toString() : "不明"))
System.out.println("大小: " + m.getSize())
System.out.println("内容:\n" + m.getContent())
}
}
用JAVAMAIL很容易实现的。
参照:
http://java.sun.com/products/javamail/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)