-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathEmailParser.java
More file actions
114 lines (79 loc) · 2.41 KB
/
EmailParser.java
File metadata and controls
114 lines (79 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class EmailParser {
/**
* @param args
*/
HashMap<String, List<String> > theMap;
public EmailParser(){
theMap = new HashMap<String, List<String> >();
}
public static void main(String[] args) {
if( args.length <= 0 ){
System.out.println(" Usage: invoke <email file name>");
return;
}
EmailParser theParser = new EmailParser();
System.out.println("Parsing emails in directory: " + args[0]);
theParser.parseDirectory(args[0]);
theParser.printCommunications();
System.out.println("done");
}
public void parseDirectory(String emailFolder){
System.out.println("Parsing emails in directory: " + emailFolder);
File dir = new File(emailFolder);
String[] children = dir.list();
if(children == null){
try {
FileInputStream fis = new FileInputStream(emailFolder);
addToHashMap(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
else {
for (int i = 0; i < children.length; i++){
parseDirectory(emailFolder + "/" + children[i]);
}
}
}
public void addToHashMap(InputStream in){
try {
Session s = Session.getDefaultInstance(new Properties());
MimeMessage message = new MimeMessage(s, in);
Address[] fromAddr = message.getFrom();
Address[] toAddr = message.getAllRecipients();
if(toAddr == null)
return;
for(int i = 0; i < toAddr.length; i++){
List<String> values = theMap.get(fromAddr[0].toString());
if(values == null){
values = new ArrayList<String>();
values.add(toAddr[i].toString());
theMap.put(fromAddr[0].toString(), values);
}
else {
values.add(toAddr[i].toString());
theMap.put(fromAddr[0].toString(), values);
}
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
public void printCommunications(){
String formattedMap = theMap.toString().replaceAll("],", "],\n");
//System.out.print(formattedMap);
try{
// Create file
FileWriter fstream = new FileWriter("EnronEmailParse-output");
BufferedWriter out = new BufferedWriter(fstream);
out.write(formattedMap);
out.close();
} catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}