这几天因为客户有要从邮件里面自动提取内容的需要,所以头痛的看来两天。
目前找到两种方法:
第一个是脚本实现,如果你用的是outlook而不是outlook express, 那么就可以用脚本实现,
脚本如下(其实微软的网站上也能搜到)
Sub writecsv()
Const olFolderInbox = 6
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
Set colItems = objFolder.Items
'Set colFilteredItems = colItems.Restrict("[Subject] = 'Project Proposal'")
'Wscript.Echo "[Subject] =" & colItems.GetLast().Subject & vbCr & vbLf & "[TO] =" & colItems.GetLast().To
'MsgBox "[Subject] =" & colItems.GetLast().Subject & vbCr & vbLf & "[TO] =" & colItems.GetLast().To
Dim msg As String
Dim count As Integer
Set FileXls = CreateObject("Scripting.FileSystemObject")
Set f = FileXls.CreateTextFile("C:/WORK/test/testfile.txt", True)
For Each objMessage In colItems
'msg = msg & "[Subject] =" & objMessage.Subject & vbCr & vbLf & "[TO] =" & objMessage.To & vbCr & vbLf & vbCr & vbLf
f.WriteLine ("[Subject] =" & objMessage.Subject & " " & "[SenderEmailAddress] =" & objMessage.SenderEmailAddress)
count = count + 1
Next
'MsgBox msg
'MsgBox count
'f.WriteBlankLines (1)
f.Close
End Sub
第二个是程序外部实现: 如果你用的是outlook express等可以导出邮件为eml格式的,就可以
用javamail来实现。这个程序也可以直接连到你的邮件服务器上把邮件读出来。运行的时候需要
javamail的pop3.jar,编译的时候需要javamail-1_4.zip. 这个代码javamail的demo里面有,
叫做msgshow.java。 但是最好把里面的dumpEnvelope()函数取得FROM和TO的地方按照
下面的代码改一下,不然如果你不是用的ascii码写的收发件人的名字,就会是乱码,比如中文。
if ((a = m.getFrom()) != null) {
InternetAddress address[] = (InternetAddress[])a;
String from = address[0].getAddress();
if (from == null)
from = "";
String personal = address[0].getPersonal();
if (personal == null)
personal = "";
String fromaddr = personal + "<" + from + ">";
pr("FROM: " + fromaddr);
}
InternetAddress address[] = (InternetAddress[])a;
String from = address[0].getAddress();
if (from == null)
from = "";
String personal = address[0].getPersonal();
if (personal == null)
personal = "";
String fromaddr = personal + "<" + from + ">";
pr("FROM: " + fromaddr);
}