1 14 package org.compiere.request; 15 16 import java.sql.*; 17 import java.util.*; 18 import java.io.*; 19 20 import javax.mail.*; 21 import javax.mail.internet.*; 22 import com.sun.mail.smtp.*; 23 24 import org.compiere.util.*; 25 26 32 public class EMailServer 33 { 34 37 public EMailServer (String host, String user, String password) 38 { 39 System.out.println("Session ... "); 41 Properties props = new Properties(); 42 props.put("mail.store.protocol", "smtp"); 43 props.put("mail.transport.protocol", "smtp"); 44 props.put("mail.host", host); 45 props.put("mail.user", user); 46 Session session = Session.getDefaultInstance(props, null); 47 session.setDebug(true); 48 49 System.out.println("Store ... "); 51 Store store; 52 try 53 { 54 store = session.getStore("imap"); 55 } 56 catch (NoSuchProviderException nsp) 57 { 58 System.out.println(nsp.getMessage()); 59 return; 60 } 61 System.out.println("Connect ... "); 62 try 63 { 64 store.connect(host, user, password); 65 } 66 catch (MessagingException mex1) 67 { 68 System.out.println(mex1.getMessage()); 69 return; 70 } 71 72 System.out.println("Folder ... "); 74 Folder folder; 75 try 76 { 77 folder = store.getDefaultFolder(); 78 } 79 catch (MessagingException mex2) 80 { 81 System.out.println(mex2.getMessage()); 82 return; 83 } 84 if (folder == null) 85 { 86 System.out.println("No default folder"); 87 return; 88 } 89 try 90 { 91 Folder[] ff = folder.list("*"); 92 95 System.out.println("Opening Folder ..."); 96 folder = folder.getFolder("INBOX"); 97 folder.open(Folder.READ_WRITE); 98 99 System.out.println("Folder: " + folder.getName() + "; Messages Total=" + folder.getMessageCount() 100 + " New=" + folder.getNewMessageCount()); 101 102 System.out.println("Get messages ..."); 103 Message[] msg = folder.getMessages(); 104 105 FetchProfile fp = new FetchProfile(); 106 fp.add(FetchProfile.Item.ENVELOPE); 107 fp.add(FetchProfile.Item.FLAGS); 108 fp.add("X-Mailer"); 109 folder.fetch(msg, fp); 110 for (int i = 0; i < msg.length; i++) 112 { 113 printEnvelope(msg[i]); 114 printBody(msg[i]); 115 } 116 117 folder.close(false); 118 store.close(); 119 } 120 catch (MessagingException mex3) 121 { 122 System.out.println(mex3.getMessage()); 123 return; 124 } 125 catch (Exception e) 126 { 127 System.out.println(e.getMessage()); 128 } 129 130 } 132 private void printEnvelope(Message m) throws Exception 133 { 134 pr("-----------------------------------------------------------------"); 135 Address[] a; 136 if ((a = m.getFrom()) != null) 138 { 139 for (int j = 0; j < a.length; j++) 140 pr("FROM: " + a[j].toString()); 141 } 142 143 if ((a = m.getRecipients(Message.RecipientType.TO)) != null) 145 { 146 for (int j = 0; j < a.length; j++) 147 pr("TO: " + a[j].toString()); 148 } 149 150 pr("SUBJECT: " + m.getSubject()); 152 153 java.util.Date d = m.getSentDate(); 155 pr("SendDate: " + (d != null ? d.toString() : "UNKNOWN")); 156 157 Flags flags = m.getFlags(); 159 StringBuffer sb = new StringBuffer (); 160 Flags.Flag[] sf = flags.getSystemFlags(); 162 boolean first = true; 163 for (int i = 0; i < sf.length; i++) 164 { 165 String s; 166 Flags.Flag f = sf[i]; 167 if (f == Flags.Flag.ANSWERED) 168 s = "\\Answered"; 169 else if (f == Flags.Flag.DELETED) 170 s = "\\Deleted"; 171 else if (f == Flags.Flag.DRAFT) 172 s = "\\Draft"; 173 else if (f == Flags.Flag.FLAGGED) 174 s = "\\Flagged"; 175 else if (f == Flags.Flag.RECENT) 176 s = "\\Recent"; 177 else if (f == Flags.Flag.SEEN) 178 s = "\\Seen"; 179 else 180 continue; if (first) 182 first = false; 183 else 184 sb.append(' '); 185 sb.append(s); 186 } 187 188 String [] uf = flags.getUserFlags(); for (int i = 0; i < uf.length; i++) 190 { 191 if (first) 192 first = false; 193 else 194 sb.append(' '); 195 sb.append(uf[i]); 196 } 197 pr("FLAGS: " + sb.toString()); 198 199 String [] hdrs = m.getHeader("X-Mailer"); 201 if (hdrs != null) 202 pr("X-Mailer: " + hdrs[0]); 203 else 204 pr("X-Mailer NOT available"); 205 206 } 208 private void printBody(Part p) throws Exception 209 { 210 pr("CONTENT-TYPE: " + p.getContentType()); 211 212 216 if (p.isMimeType("text/plain")) 217 { 218 pr("Plain text ---------------------------"); 219 System.out.println((String )p.getContent()); 220 } 221 else if (p.isMimeType("multipart/*")) 222 { 223 pr("Multipart ---------------------------"); 224 Multipart mp = (Multipart)p.getContent(); 225 int count = mp.getCount(); 226 for (int i = 0; i < count; i++) 227 printBody(mp.getBodyPart(i)); 228 } 229 else if (p.isMimeType("message/rfc822")) 230 { 231 pr("Nested ---------------------------"); 232 printBody((Part)p.getContent()); 233 } 234 else 235 { 236 240 Object o = p.getContent(); 241 if (o instanceof String ) 242 { 243 pr("This is a string ---------------------------"); 244 System.out.println((String )o); 245 } 246 else if (o instanceof InputStream) 247 { 248 pr("This is just an input stream ---------------------------"); 249 InputStream is = (InputStream)o; 250 int c; 251 while ((c = is.read()) != -1) 252 System.out.write(c); 253 } 254 else 255 { 256 pr("This is an unknown type ---------------------------"); 257 pr(o.toString()); 258 } 259 } 260 } 262 private static void pr(String s) 263 { 264 System.out.println(s); 266 } 267 268 269 272 public static void main (String [] arg) 273 { 274 279 } 281 282 } | Popular Tags |