1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.james.transport.mailets;
23
24 import java.util.HashMap;
25 import java.util.Iterator;
26 import java.util.StringTokenizer;
27
28 import javax.mail.MessagingException;
29 import javax.mail.internet.MimeMessage;
30
31 import org.apache.mailet.base.GenericMailet;
32 import org.apache.mailet.Mail;
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public class MailAttributesToMimeHeaders extends GenericMailet {
47
48
49
50
51 private HashMap map = new HashMap();
52
53
54
55
56 public void init() throws MessagingException {
57 String simplemappings = getInitParameter("simplemapping");
58 if (simplemappings != null) {
59
60 StringTokenizer st = new StringTokenizer(simplemappings, ",");
61 while (st.hasMoreTokens()) {
62
63 String parameters[] = st.nextToken().split(";");
64
65
66 if (parameters.length > 2 || parameters.length < 2) {
67 throw new MessagingException(
68 "Invalid config. Please use \"attributeName; headerName\"");
69 } else {
70
71 map.put(parameters[0].trim(), parameters[1].trim());
72 }
73 }
74 } else {
75 throw new MessagingException(
76 "Invalid config. Please use \"attributeName; headerName\"");
77 }
78 }
79
80
81
82
83 public void service(Mail mail) {
84 MimeMessage message;
85 try {
86 message = mail.getMessage();
87
88 Iterator keys = map.keySet().iterator();
89
90 while (keys.hasNext()) {
91 String key = keys.next().toString();
92 String value = (String) mail.getAttribute(key);
93 String headerName = map.get(key).toString();
94
95
96 if (headerName != null && value != null) {
97
98 message.setHeader(headerName, value);
99 }
100 }
101 message.saveChanges();
102 } catch (MessagingException e) {
103 log(e.getMessage());
104 }
105 }
106
107 }