1 16 package org.apache.jetspeed.modules.actions.portlets.email; 17 18 import org.apache.jetspeed.portal.portlets.VelocityPortlet; 19 import org.apache.jetspeed.services.JetspeedSecurity; 20 import org.apache.jetspeed.services.logging.JetspeedLogFactoryService; 21 import org.apache.jetspeed.services.logging.JetspeedLogger; 22 import org.apache.jetspeed.util.PortletConfigState; 23 import org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction; 24 25 import org.apache.turbine.util.RunData; 26 import org.apache.torque.util.Criteria; 27 import org.apache.turbine.util.upload.FileItem; 28 29 import org.apache.velocity.context.Context; 30 31 import java.util.Vector ; 33 import java.util.Hashtable ; 34 35 import java.util.List ; 36 import java.util.Enumeration ; 37 38 import java.io.IOException ; 39 import java.io.InputStream ; 40 import java.io.ByteArrayInputStream ; 41 42 44 import javax.mail.Folder ; 45 import javax.mail.AuthenticationFailedException ; 46 import javax.mail.NoSuchProviderException ; 47 import javax.mail.MessagingException ; 48 import javax.mail.Message ; 49 import javax.mail.Multipart ; 50 import javax.mail.Part ; 51 import javax.mail.Header ; 52 53 import javax.servlet.http.HttpServletResponse ; 55 56 import org.apache.jetspeed.om.apps.email.EmailInboxPeer; 58 import org.apache.jetspeed.om.apps.email.EmailInbox; 59 60 import org.apache.jetspeed.util.PortletSessionState; 61 67 68 public class EmailPortlet extends VelocityPortletAction 69 { 70 71 private static final JetspeedLogger log = JetspeedLogFactoryService 72 .getLogger(EmailPortlet.class.getName()); 73 74 private final int maxPerPage = 10; 75 76 81 protected void buildMaximizedContext(VelocityPortlet portlet, 82 Context context, RunData rundata) throws Exception 83 { 84 buildNormalContext(portlet, context, rundata); 85 86 } 87 88 protected static final String CUSTOMIZE_TEMPLATE = "customizeTemplate"; 89 90 94 protected void buildConfigureContext(VelocityPortlet portlet, 95 Context context, RunData rundata) 96 { 97 try 98 { 99 super.buildConfigureContext(portlet, context, rundata); 100 } catch (Exception ex) 101 { 102 log.error("Exception", ex); 103 } 104 String template = PortletConfigState.getParameter(portlet, rundata, 105 CUSTOMIZE_TEMPLATE, null); 106 setTemplate(rundata, template); 107 } 108 109 113 protected void buildNormalContext(VelocityPortlet portlet, Context context, 114 RunData rundata) throws Exception 115 { 116 117 118 Hashtable userInfo = this.getEmailUserInfo(rundata, context); 119 Email email = null; 120 121 log.info("BuildNormalContext in EmailPortlet"); 122 String host = getPortletParameter(rundata, context, "hostname"); 123 context.put("host", host); 124 125 String user = (String ) userInfo.get("username"); 126 String pass = (String ) userInfo.get("password"); 127 String emailAdd = (String ) userInfo.get("email"); 128 129 context.put("emailAdd", emailAdd); 130 String message_prompt = (String )getPortletSession(rundata, context, 131 "message_prompt"); 132 133 context.put("message_prompt", message_prompt); 134 setPortletSession(rundata, context, "message_prompt", ""); 135 136 137 138 139 try 140 { 141 email = new Email(user, pass, 142 getPortletParameters(rundata, context)); 143 context.put("hasLoggedIn", "yes"); 145 } catch (AuthenticationFailedException ae) 146 { 147 message_prompt = "Please Enter a Valid Username and Password."; 148 context.put("message_prompt", message_prompt); 149 context.put("hasLoggedIn", "no"); 150 log.error(ae); 151 return; 152 } catch (NoSuchProviderException np) 153 { 154 message_prompt = "Please Check Email parameters... Protocol(imap/pop3) is case-sensitive. "; 155 context.put("message_prompt", message_prompt); 156 context.put("hasLoggedIn", "no"); 157 log.error(np); 158 return; 159 } catch (Exception e) 160 { 161 message_prompt = e.getMessage(); 162 context.put("message_prompt", message_prompt); 163 context.put("hasLoggedIn", "no"); 164 log.error(e); 165 return; 166 } 167 168 169 String showNumNewmessages = (String )getPortletSession(rundata, context, 170 "showNumNewmessages"); 171 172 if (showNumNewmessages == null || showNumNewmessages.equals("")) 173 { 177 String protocol = getPortletParameter(rundata, context, "protocol"); 178 context.put("protocol", protocol); 179 180 int numNewmessages = email.num_Newmessages(); 181 182 String showInbox = (String )getPortletSession(rundata, context, 183 "showInbox"); 184 185 log.info("showInbox " + showInbox); 186 if (showInbox == null || showInbox.equals("")) { 189 if (numNewmessages != 0) 190 { 191 context.put("numNewmessages", String 192 .valueOf(numNewmessages)); } 197 } 198 context.put("num_Newmessages", String.valueOf(numNewmessages)); setPortletSession(rundata, context, "showNumNewmessages", "yes"); 206 setPortletSession(rundata, context, "numNewmessages", String 207 .valueOf(numNewmessages)); 208 209 } else if (showNumNewmessages.equals("yes")) 210 { 211 String num_Newmessages = (String )getPortletSession(rundata, context, 212 "numNewmessages"); 213 context.put("num_Newmessages", num_Newmessages); 214 } 215 216 String compose = (String )getPortletSession(rundata, context, "compose"); 217 context.put("compose", compose); 218 219 String showInbox = (String )getPortletSession(rundata, context, "showInbox"); 220 context.put("showInbox", showInbox); 221 222 String showContent = (String )getPortletSession(rundata, context, 223 "showContent"); 224 context.put("showContent", showContent); 225 226 String createfolder = (String )getPortletSession(rundata, context, 227 "createfolder"); 228 context.put("createfolder", createfolder); 229 230 String showFolders = (String )getPortletSession(rundata, context, 231 "showFolders"); 232 context.put("showFolders", showFolders); 233 234 String protocol = (String )getPortletParameter(rundata, context, "protocol"); 236 if (protocol.equals("imap")) 237 { 238 String folder_name = (String )getPortletSession(rundata, context, 239 "folder_name"); 240 241 if (folder_name == null || folder_name.equals("")) 242 { 243 context.put("folder_name", "Inbox"); 244 } else 245 { 246 context.put("folder_name", folder_name); 247 } 248 249 String showmessagefolder = (String )getPortletSession(rundata, context, 251 "showmessagefolder"); 252 context.put("showmessagefolder", showmessagefolder); 253 } 254 255 String inboxMessages = (String )getPortletSession(rundata, context, 256 "inboxMessages"); 257 258 checkMessages(rundata, context,email); 259 260 String msgeContent = (String )getPortletSession(rundata, context, 261 "msgeContent"); 262 263 log.info("msgecontent " + msgeContent); 264 265 if (msgeContent == null || msgeContent.equals("")) 266 { 267 log.info("null"); 268 269 Vector inContent = (Vector ) getPortletSession(rundata, context, "inContent"); 272 273 context.put("inContent", inContent); 274 } else if (msgeContent.equals("yes")) 275 { 276 doShowcontent(rundata, context,email); 277 setPortletSession(rundata, context, "msgeContent", null); 278 279 } 280 281 String reply = (String )getPortletSession(rundata, context, "reply"); 282 context.put("reply", reply); 283 String forward = (String )getPortletSession(rundata, context, "forward"); 284 context.put("forward", forward); 285 String rsubject = (String )getPortletSession(rundata, context, "rsubject"); 286 context.put("rsubject", rsubject); 287 288 String msg = (String )getPortletSession(rundata, context, "msg"); 289 context.put("msg", msg); 290 291 293 String msgctr = (String )getPortletSession(rundata, context, "msgcount"); 294 String msgcount = ""; 295 if (msgctr != null && !msgctr.equals("")) 296 { 297 Integer imsgctr = new Integer (msgctr); 298 context.put("msgcount", imsgctr); 299 } else 300 { 301 context.put("msgcount", ""); 302 } 303 304 String pages = (String )getPortletSession(rundata, context, 305 "total_no_of_pages"); 306 String total_no_of_pages = ""; 307 if (pages != null && !pages.equals("")) 308 { 309 Integer ipages = new Integer (pages); 310 context.put("total_no_of_pages", ipages); 311 } else 312 { 313 context.put("total_no_of_pages", ""); 314 } 315 316 String cpage = (String )getPortletSession(rundata, context, "cur_page"); 317 String cur_page = ""; 318 if (cpage != null && !cpage.equals("")) 319 { 320 Integer icur_page = new Integer (cpage); 321 context.put("cur_page", icur_page); 322 } else 323 { 324 context.put("cur_page", ""); 325 } 326 327 String in_index = (String )getPortletSession(rundata, context, "start_index"); 328 String start_index = ""; 329 if (in_index != null && !in_index.equals("")) 330 { 331 Integer iin_index = new Integer (in_index); 332 context.put("start_index", iin_index); 333 } else 334 { 335 context.put("start_index", ""); 336 } 337 338 String cRange = (String )getPortletSession(rundata, context, "range_per_page"); 339 String range_per_page = ""; 340 if (cRange != null && !cRange.equals("")) 341 { 342 Integer irange_per_page = new Integer (cRange); 343 context.put("range_per_page", irange_per_page); 344 } else 345 { 346 context.put("range_per_page", ""); 347 } 348 349 if (protocol.equals("imap")) 350 { 351 context.put("protocol", protocol); 352 353 Vector vFolders = (Vector ) email.allFolders(); 354 if (vFolders != null) 355 { 356 357 context.put("vFolders", vFolders); 358 } 359 360 Vector message_folder = (Vector ) getPortletSession(rundata, context, "message_folder"); 362 363 if (message_folder != null) 364 { 365 366 context.put("message_folder", message_folder); 367 } 368 369 } 370 email.close(); 371 System.gc(); 372 373 } 375 public void doAuth(RunData data, Context context) 376 { 377 log.info("doAuth in emailportlet"); 378 Hashtable userInfo = this.getEmailUserInfo(data, context); 379 380 String user = (String ) userInfo.get("username"); 381 String pass = (String ) userInfo.get("password"); 382 383 try 384 { 385 Email email = new Email(user, pass, getPortletParameters(data, 386 context)); 387 setPortletSession(data, context, "showFolders", "yes"); 389 setPortletSession(data, context, "hasLoggedIn", "yes"); 390 setPortletSession(data, context, "showNumNewmessages", null); 392 setPortletSession(data, context, "showInbox", null); 393 setPortletSession(data, context, "message_prompt", null); 394 email.close(); 395 396 } catch (AuthenticationFailedException ae) 397 { 398 String message_prompt = "Authentication Failed... Bad LogIn."; 399 setPortletSession(data, context, "hasLoggedIn", "no"); 400 setPortletSession(data, context, "message_prompt", message_prompt); 401 } catch (NoSuchProviderException np) 402 { 403 String message_prompt = "Please Check Email parameters... Protocol(imap/pop3) is case-sensitive."; 404 setPortletSession(data, context, "hasLoggedIn", "no"); 405 setPortletSession(data, context, "message_prompt", message_prompt); 406 } catch (Exception e) 407 { 408 String message_prompt = e.getMessage(); 409 setPortletSession(data, context, "message_prompt", message_prompt); 410 log.info("error : " + e.getMessage()); 411 } 412 413 } 415 416 public void doSignout(RunData data, Context context) 417 { 418 log.info("sign out"); 419 setPortletSession(data, context, "hasLoggedIn", "no"); 420 setPortletSession(data, context, "showFolders", "no"); 421 setPortletSession(data, context, "showInbox", "no"); 422 setPortletSession(data, context, "compose", "no"); 423 setPortletSession(data, context, "showContent", "no"); 424 setPortletSession(data, context, "reply", "no"); 425 setPortletSession(data, context, "forward", "no"); 426 setPortletSession(data, context, "createfolder", "no"); 427 setPortletSession(data, context, "message_prompt", null); 428 } 429 430 public void doCompose(RunData data, Context context) throws Exception 431 { 432 getEmailUserInfo(data, context); 433 log.info("docompose"); 434 setPortletSession(data, context, "showFolders", "no"); 435 setPortletSession(data, context, "showInbox", "no"); 436 setPortletSession(data, context, "compose", "yes"); 437 setPortletSession(data, context, "showContent", "no"); 438 setPortletSession(data, context, "reply", "no"); 439 setPortletSession(data, context, "forward", "no"); 440 setPortletSession(data, context, "createfolder", "no"); 441 setPortletSession(data, context, "showmessagefolder", "no"); 442 setPortletSession(data, context, "message_prompt", null); 443 444 } 445 446 public int checkNewmessage(Message message[], int current_index) 448 throws Exception 449 { 450 log.info("### check new message"); 451 452 String msgeId = getMessageId(message[current_index]); 454 455 Criteria cr = new Criteria(); 456 cr.add(EmailInboxPeer.MESSAGE_ID, msgeId); 457 458 List vMsge = EmailInboxPeer.doSelect(cr); if (vMsge.isEmpty()) 460 { return 1; 462 } else 463 { 465 EmailInbox email = (EmailInbox) EmailInboxPeer.doSelect(cr).get(0); 466 if (email.getReadflag() == 0) 468 { 469 return 1; } else 471 return 0; 472 } 473 } 474 475 public void doSend(RunData data, Context context) 476 { 477 try 478 { 479 Hashtable userInfo = this.getEmailUserInfo(data, context); 480 481 log.info("do send in email portlet"); 482 String user = (String ) userInfo.get("username"); 483 String pass = (String ) userInfo.get("password"); 484 485 String addressTo = data.getParameters().getString("addressTo"); 486 String addressFrom = data.getParameters().getString("addressFrom"); 487 setPortletSession(data, context, "addressFrom", addressFrom); 488 489 String subject = data.getParameters().getString("subject"); 490 String msg = data.getParameters().getString("msg"); 491 FileItem fileItem = data.getParameters().getFileItem("newfile"); 492 493 Email email = new Email(user, pass, getPortletParameters(data, 494 context)); 495 496 email.doSendEmail(addressTo, addressFrom, subject, msg, fileItem); 497 email.close(); 498 String message_prompt = "Message Sent"; 499 setPortletSession(data, context, "message_prompt", message_prompt); 500 setPortletSession(data, context, "msgeIndex", null); 501 502 } catch (Exception e) 503 { 504 setPortletSession(data, context, "message_prompt", 505 "Message Sending Failed." + e.getMessage()); 506 507 log.error("doSend()", e); 508 } 509 } 510 511 public void doReply(RunData data, Context context) throws Exception 512 { 513 514 log.info("doReply"); 515 516 setPortletSession(data, context, "showContent", "no"); 517 setPortletSession(data, context, "forward", "no"); 518 setPortletSession(data, context, "reply", "yes"); 519 520 Hashtable h = (Hashtable ) getPortletSession(data, context, "hcontent"); 521 522 String subject = (String ) h.get("Subject").toString(); 524 525 String msg = (String ) h.get("message").toString(); 527 setPortletSession(data, context, "msg", "Original Message: " + "\n" 528 + "From: " + h.get("From") + "\n" + "Subject: " 529 + h.get("Subject") + "\n" + msg); 530 531 if (subject.length() > 3) 534 { 535 if (subject.substring(0, 3).equals("Re:")) 536 { 537 setPortletSession(data, context, "rsubject", subject); 538 539 } else 540 { 541 setPortletSession(data, context, "rsubject", "Re:" + subject); 542 log.info("subject" + subject); 543 } 544 } else 545 { 546 setPortletSession(data, context, "rsubject", "Re:" + subject); 547 } 548 setPortletSession(data, context, "msgeIndex", null); 549 } 550 551 public void doSendreply(RunData data, Context context) 552 { 553 String recipient = null; 554 555 try 556 { 557 log.info("doSendReply"); 558 559 Hashtable userInfo = this.getEmailUserInfo(data, context); 560 String user = (String ) userInfo.get("username"); 561 String pass = (String ) userInfo.get("password"); 562 String emailAdd = (String ) userInfo.get("email"); 563 564 String index = (String )getPortletSession(data, context, "index"); 565 566 int current_index = Integer.parseInt(index); 567 log.info("index" + current_index); 568 569 String msg = (String ) data.getParameters().getString("msg"); 570 log.info("reply message &&&&&&&&&&&&&&&& " + msg); 571 setPortletSession(data, context, "msg", msg); 572 574 String from = data.getParameters().getString("addressFrom"); 575 576 String addressTo = data.getParameters().getString("addressTo"); 579 580 String subject = data.getParameters().getString("subject"); 582 583 msg = data.getParameters().getString("msg"); 585 586 String newmsge = checkFormat(msg); 587 setPortletSession(data, context, "msg", newmsge); 588 if (subject.equals("")) 590 { 591 subject = "none"; 592 } 593 594 if (subject.substring(0, 3).equals("Re:")) 597 { 598 setPortletSession(data, context, "rsubject", subject); 599 } else 600 { 601 setPortletSession(data, context, "rsubject", "Re:" + subject); 602 } 603 604 String newSubj = (String )getPortletSession(data, context, "rsubject"); 605 msg = (String )getPortletSession(data, context, "msg"); 606 607 String msgecontent = convertMessage(msg); 608 609 FileItem fileItem = data.getParameters().getFileItem( 610 "attachmentReply"); 611 612 Email email = new Email(user, pass, getPortletParameters(data, 613 context)); 614 Message message = email.getMessage(current_index); 616 email.reply(from, addressTo, msgecontent, newSubj, fileItem, 617 message); 618 email.close(); 619 620 String message_prompt = "Reply Sent"; 621 setPortletSession(data, context, "message_prompt", message_prompt); 622 setPortletSession(data, context, "msgeIndex", null); 623 } catch (Exception e) 624 { 625 626 setPortletSession(data, context, "message_prompt", 627 "Message Sending Failed." + e.getMessage()); 628 log.error("Error in doSendReply()", e); 629 } 630 } 631 632 public void doForward(RunData data, Context context) 633 { 634 log.info("doforward"); 635 setPortletSession(data, context, "showContent", "no"); 636 setPortletSession(data, context, "reply", "no"); 637 setPortletSession(data, context, "createfolder", "no"); 638 setPortletSession(data, context, "forward", "yes"); 639 640 Hashtable h = (Hashtable ) getPortletSession(data, context, "hcontent"); 641 642 String subject = (String ) h.get("Subject").toString(); 644 log.info("subj in doforward" + subject); 645 646 if (subject.length() > 3) 649 { 650 if (subject.substring(0, 4).equals("Fwd:")) 651 { 652 setPortletSession(data, context, "rsubject", subject); 653 log.info("subject" + subject); 654 } else 655 { 656 setPortletSession(data, context, "rsubject", "Fwd:" + subject); 657 } 658 } else 659 { 660 setPortletSession(data, context, "rsubject", "Fwd:" + subject); 661 log.info("subject" + subject); 662 } 663 664 String msg = (String ) h.get("message").toString(); 666 setPortletSession(data, context, "msg", msg); 667 setPortletSession(data, context, "msgeIndex", null); 668 669 } 670 671 public void doForwardsend(RunData data, Context context) 672 { 673 674 log.info("forwardsend"); 675 676 Hashtable userInfo = this.getEmailUserInfo(data, context); 677 String user = (String ) userInfo.get("username"); 678 String pass = (String ) userInfo.get("password"); 679 String from = (String ) userInfo.get("email"); 680 String to = data.getParameters().getString("addressTo"); 682 683 String index = (String )getPortletSession(data, context, "index"); 684 int current_index = Integer.parseInt(index); 685 setPortletSession(data, context, "msgeIndex", null); 686 try 687 { 688 690 String subject = data.getParameters().getString("subject"); 692 if (subject.equals("")) 694 { 695 subject = "none"; 696 } 697 698 if (subject.substring(0, 4).equals("Fwd:")) 701 { 702 setPortletSession(data, context, "rsubject", subject); 704 } else 705 { 706 setPortletSession(data, context, "rsubject", "Fwd:" + subject); 707 } 708 String fsubject = (String )getPortletSession(data, context, "rsubject"); 709 710 String content = data.getParameters().getString("msg"); 712 String msge = checkFormat(content); 713 714 Email email = new Email(user, pass, getPortletParameters(data, 715 context)); 716 717 Message message = email.getMessage(current_index); 719 email.forward(to, from, fsubject, msge, message); 720 email.close(); 721 722 String message_prompt = "Message Sent"; 723 setPortletSession(data, context, "message_prompt", message_prompt); 724 setPortletSession(data, context, "msgeIndex", null); 725 } catch (Exception e) 726 { 727 setPortletSession(data, context, "message_prompt", 728 "Message Sending Failed." + e.getMessage()); 729 log.error("Error in doForwardSend()", e); 730 } 731 } 732 733 public void doDelete(RunData data, Context context) 734 { 735 log.info("delete"); 736 737 Hashtable userInfo = this.getEmailUserInfo(data, context); 738 String user = (String ) userInfo.get("username"); 739 String pass = (String ) userInfo.get("password"); 740 741 String foldername = (String )getPortletSession(data, context, "folder_name"); 742 743 int current_index = 0; 744 745 try 746 { 747 String index = (String )getPortletSession(data, context, "index"); 749 Email email = new Email(user, pass, getPortletParameters(data, 750 context)); 751 752 String protocol = getPortletParameter(data, context, "protocol"); 753 754 if (index != null && !index.equals("")) 756 { 757 current_index = Integer.parseInt(index); 758 if (protocol.equals("imap")) 759 { 760 email.contentDelete(current_index, foldername, protocol); 761 } else 762 { 763 email.contentDelete(current_index); 764 765 } 766 767 setPortletSession(data, context, "message_prompt", "Deleted"); 768 } 769 770 else 772 { 773 String [] checkboxes = null; 774 checkboxes = data.getParameters().getStrings("check"); 775 if (checkboxes != null) 776 { 777 if (protocol.equals("imap")) 778 { 779 email.checkboxDelete(foldername, checkboxes, protocol); 780 } else 782 { 783 email.checkboxDelete(checkboxes); 784 785 } 786 787 setPortletSession(data, context, "message_prompt", 788 "Deleted"); 789 } else 790 { 791 setPortletSession(data, context, "message_prompt", 792 "Select message to be deleted."); 793 } 794 795 } 796 email.close(); 797 log.info("deleted"); 798 setPortletSession(data, context, "showContent", "no"); 799 setPortletSession(data, context, "showInbox", "yes"); 800 setPortletSession(data, context, "msgeIndex", null); 801 } catch (Exception e) 802 { 803 setPortletSession(data, context, "message_prompt", 804 "Delete Failed. " + e.getMessage()); 805 log.error("Error in doDelete()", e); 806 807 } 808 } 809 810 public void doShowcontent(RunData data, Context context,Email email) throws Exception 811 { 812 813 log.info("show content"); 814 String AttachmentName = null; 815 Vector vAttachments = new Vector (); 816 Message message = null; 817 Hashtable userInfo = this.getEmailUserInfo(data, context); 818 String user = (String ) userInfo.get("username"); 819 String pass = (String ) userInfo.get("password"); 820 821 String folderMode = (String )getPortletSession(data, context, "folderMode"); 822 823 Vector vContent = new Vector (); 824 825 String protocol = getPortletParameter(data, context, "protocol"); 826 827 String index = (String )getPortletSession(data, context, "index"); 828 829 String folder_name = (String )getPortletSession(data, context, "folder_name"); 830 831 int current_index = Integer.parseInt(index); 832 833 if (folderMode.equals("inboxFolder") || (protocol.equals("pop3"))) 834 { 835 message = email.getMessage(current_index); 836 } else 837 { 838 message = email.getMessage(current_index, folder_name); 839 Folder current_folder = email.getFolder(folder_name); 840 841 } 842 843 String subject = email.getSubject(message); 844 String from = email.getFrom(message); 845 846 String date = null; 852 853 Vector vAddr = email.getTo(message); 854 String messageContent = email.getMessageContent(message); 855 856 if (!message.isMimeType("text/plain")) 857 { 858 boolean hasAtt = email.checkAttachment(message); 859 if (hasAtt == true) 860 { 861 AttachmentName = email.getAttachmentname(message); 862 log.info("attachmentName" + AttachmentName); 863 vAttachments = email.getAttachments(message); 864 log.info("vAttachments " + vAttachments.size()); 865 } 866 } 867 868 if (protocol.equals("pop3")) 869 { 870 context.put("protocol", "pop3"); 871 872 } else if (protocol.equals("imap")) 873 { 874 date = email.getReceivedDate(message); 875 context.put("protocol", "imap"); 876 } 877 878 if ((subject == null) || (subject.equals(""))) 880 { 881 subject = "none"; 882 log.info("subj" + subject); 883 } 884 885 Hashtable hcontent = new Hashtable (); 886 hcontent.put("MessageId", getMessageId(message)); 888 889 hcontent.put("From", from); 890 hcontent.put("Subject", subject); 891 if (protocol.equals("imap")) 892 { 893 hcontent.put("ReceivedDate", date); 894 } 895 896 hcontent.put("message", messageContent); 897 898 if (AttachmentName != null) 899 hcontent.put("AttachmentName", AttachmentName); 900 901 vContent.add(hcontent); 902 setMessageflag(message); 904 905 setPortletSession(data, context, "hcontent", hcontent); 906 setPortletSession(data, context, "inContent", vContent); 907 908 context.put("inContent", vContent); 909 context.put("vAddr", vAddr); 910 context.put("vAttachments", vAttachments); 911 912 913 } 914 915 public void doShow(RunData data, Context context) throws Exception 916 { 917 log.info("show"); 918 setPortletSession(data, context, "showInbox", "no"); 919 setPortletSession(data, context, "showContent", "yes"); 920 setPortletSession(data, context, "msgeContent", "yes"); 921 setPortletSession(data, context, "createfolder", "no"); 922 setPortletSession(data, context, "showmessagefolder", "no"); 923 924 String index = (String ) data.getParameters().getString("index"); 926 String folderMode = (String ) data.getParameters().getString( 928 "folderMode"); 929 930 setPortletSession(data, context, "index", index); 931 setPortletSession(data, context, "folderMode", folderMode); 932 933 } 934 935 public void doInbox(RunData data, Context context) throws Exception 936 { 937 938 int cur_page = 1; 939 int range_per_page = maxPerPage - 1; 940 int start_index = 0; 941 int total_no_of_pages = 0; 942 943 setPortletSession(data, context, "index", null); 945 setPortletSession(data, context, "message_prompt", null); 946 947 setPortletSession(data, context, "cur_page", String.valueOf(cur_page)); 949 setPortletSession(data, context, "range_per_page", String 950 .valueOf(range_per_page)); 951 setPortletSession(data, context, "start_index", String 952 .valueOf(start_index)); 953 setPortletSession(data, context, "total_no_of_pages", String 954 .valueOf(total_no_of_pages)); 955 setPortletSession(data, context, "showFolders", "no"); 956 setPortletSession(data, context, "showInbox", "yes"); 957 setPortletSession(data, context, "compose", "no"); 958 setPortletSession(data, context, "showContent", "no"); 959 setPortletSession(data, context, "reply", "no"); 960 setPortletSession(data, context, "forward", "no"); 961 setPortletSession(data, context, "createfolder", "no"); 962 setPortletSession(data, context, "showmessagefolder", "no"); 963 setPortletSession(data, context, "folder_name", "INBOX"); 964 965 Hashtable userInfo = this.getEmailUserInfo(data, context); 966 String user = (String ) userInfo.get("username"); 967 String pass = (String ) userInfo.get("password"); 968 969 setPortletSession(data, context, "showNumNewmessages", null); 971 972 setPortletSession(data, context, "inboxMessages", "yes"); 973 setPortletSession(data, context, "msgeIndex", null); 974 975 } 976 977 public void checkMessages(RunData data, Context context, Email email) throws Exception 978 { 979 980 String start_index1 = (String )getPortletSession(data, context, "start_index"); 981 982 String range_per_page1 = (String )getPortletSession(data, context, 983 "range_per_page"); 984 String cur_page1 = (String )getPortletSession(data, context, "cur_page"); 985 String total_no_of_pages1 = (String )getPortletSession(data, context, 986 "total_no_of_pages"); 987 int start_index = Integer.parseInt(start_index1); 988 int range_per_page = Integer.parseInt(range_per_page1); 989 int cur_page = Integer.parseInt(cur_page1); 990 int total_no_of_pages = Integer.parseInt(total_no_of_pages1); 991 992 try 993 { 994 Hashtable userInfo = this.getEmailUserInfo(data, context); 995 String user = (String ) userInfo.get("username"); 996 String pass = (String ) userInfo.get("password"); 997 Vector vMessages = null; 998 int msgectr = email.getNo_of_messages(); 999 1000 setPortletSession(data, context, "msgcount", String 1001 .valueOf(msgectr)); 1002 1003 if (msgectr > maxPerPage) 1005 { 1006 1007 if ((msgectr % 10) == 0) 1009 { 1010 total_no_of_pages = (msgectr / 10); 1011 setPortletSession(data, context, "total_no_of_pages", 1012 String.valueOf(total_no_of_pages)); 1013 log.info("total pages" + total_no_of_pages); 1014 setPortletSession(data, context, "cur_page", String 1015 .valueOf(cur_page)); 1016 log.info("cur_page" + cur_page); 1017 } else 1018 { 1019 total_no_of_pages = ((msgectr / 10) + 1); 1020 setPortletSession(data, context, "total_no_of_pages", 1021 String.valueOf(total_no_of_pages)); 1022 log.info("total pages" + total_no_of_pages); 1023 setPortletSession(data, context, "cur_page", String 1024 .valueOf(cur_page)); 1025 log.info("cur_page" + cur_page); 1026 } 1027 } 1028 setPortletSession(data, context, "start_index", String 1029 .valueOf(start_index)); 1030 1031 setPortletSession(data, context, "range_per_page", String 1032 .valueOf(range_per_page)); 1033 1034 1035 range_per_page1 = (String )getPortletSession(data, context, 1036 "range_per_page"); 1037 1038 String protocol = getPortletParameter(data, context, "protocol"); 1039 if (protocol.equals("pop3")) 1040 { 1041 context.put("protocol", "pop3"); 1042 } else if (protocol.equals("imap")) 1043 { 1044 context.put("protocol", "imap"); 1045 } 1046 1047 Vector vAscmessages = email.openInbox(protocol); 1048 1050 int msgeIndexnum = 0; String msgeIndexstring = (String )getPortletSession(data, context, 1052 "msgeIndex"); 1053 msgeIndexnum = vAscmessages.size(); 1054 if (msgeIndexstring == null || msgeIndexstring.equals("")) 1055 { 1056 setPortletSession(data, context, "msgeIndex", String 1057 .valueOf(msgeIndexnum)); 1058 1059 } else 1060 { 1061 1062 try 1065 { 1066 int msgIndex = Integer.parseInt(msgeIndexstring); 1067 if (msgIndex > msgeIndexnum) 1068 { 1069 setPortletSession(data, context, "msgeIndex", null); 1070 } 1071 1072 } catch (NumberFormatException ne) 1073 { 1074 setPortletSession(data, context, "msgeIndex", String 1075 .valueOf(msgeIndexnum)); 1076 } 1077 1078 } 1079 1080 boolean withAttachment = true; 1081 for (int i = 0; i < vAscmessages.size(); i++) 1082 { 1083 Hashtable ht = (Hashtable ) vAscmessages.get(i); 1084 String s = (String ) ht.get("hasAttachment"); 1085 Message message = (Message ) ht.get("message"); 1086 1087 if (s.equals("")) 1088 { 1089 withAttachment = false; 1090 } else 1091 withAttachment = true; 1092 1093 DBInsert(data, message, withAttachment); 1094 1095 } 1096 1097 descendingOrder(data, context, vAscmessages, start_index, 1098 range_per_page, msgectr); 1099 1100 } catch (NoSuchProviderException np) 1101 { 1102 log.error("Please check email paramters... Protocol(imap/pop3) is case-sensitive."); 1103 log.error(np); 1104 } catch (MessagingException ms) 1105 { 1106 log.error(ms); 1107 } catch (IOException io) 1108 { 1109 log.error(io); 1110 } 1111 } 1112 1113 1116 public String getMessageId(Message message) 1117 { 1118 String messageid = ""; 1119 try 1120 { 1121 Enumeration e = message.getAllHeaders(); 1123 while (messageid.equals("")) 1124 { 1125 Header header = (Header ) e.nextElement(); 1126 if (header.getName().equals("Message-ID")) 1127 { 1128 messageid = header.getValue(); 1129 } 1130 } 1131 } catch (Exception e) 1132 { 1133 1134 log.error("Error in getMessageId()", e); 1135 } 1136 return messageid; 1137 } 1139 1140 1143 1144 public void DBInsert(RunData data, Message message, boolean withAttachment) 1145 { 1146 try 1147 { 1148 log.info("[RJPY] Trying to write into DB..."); 1149 1150 String messageid = getMessageId(message); 1151 Criteria crit = new Criteria(); 1152 crit.add(EmailInboxPeer.MESSAGE_ID, messageid); 1153 List vEmail = EmailInboxPeer.doSelect(crit); if (vEmail.size() == 0) 1156 { 1157 1158 log.info("[RJPY] This email is not yet in the DB..."); 1159 String filename = ""; 1160 InputStream is = null; 1161 1163 int size = 0; 1164 1165 if (withAttachment) 1167 { 1168 1169 Object obj = message.getContent(); 1170 Multipart mpart = (Multipart ) obj; 1171 1172 for (int j = 0, n = mpart.getCount(); j < n; j++) 1173 { 1174 Part part = mpart.getBodyPart(j); 1175 String disposition = part.getDisposition(); 1176 if ((disposition != null) 1177 && ((disposition 1178 .equalsIgnoreCase(Part.ATTACHMENT)) || (disposition 1179 .equals(Part.INLINE)))) 1180 { 1181 if (part.getFileName() != null) 1182 { 1183 log.info("*** Attachment name: " 1184 + part.getFileName()); 1185 if (part.getContent() instanceof String ) 1186 { 1187 byte[] b = ((String ) part.getContent()) 1188 .getBytes(); 1189 is = new ByteArrayInputStream (b); 1190 } else 1191 { 1192 is = part.getInputStream(); 1193 } 1194 filename = part.getFileName(); 1195 size = part.getSize(); 1196 } 1197 } 1198 } } 1201 if (is != null) 1202 { 1203 log.info("sure"); 1205 EmailInbox emailInbox = new EmailInbox(); 1206 emailInbox.setMessageId(messageid); 1207 emailInbox.setReadflag(0); 1208 emailInbox.setFilename(filename); 1209 1210 byte[] b = new byte[size]; 1211 int bytes = is.read(b); 1212 while (bytes != -1) 1213 { 1214 bytes = is.read(b); 1215 } 1216 emailInbox.setAttachment(b); 1217 EmailInboxPeer.doInsert(emailInbox); 1218 } else 1219 { 1220 EmailInbox emailInbox = new EmailInbox(); 1222 emailInbox.setMessageId(messageid); 1223 emailInbox.setReadflag(0); 1224 EmailInboxPeer.doInsert(emailInbox); 1225 } 1226 } 1229 } catch (Exception ex) 1230 { 1231 1232 log.error("Error in DBInsert()", ex); 1233 1234 } 1235 1236 } 1237 1238 public void descendingOrder(RunData data, Context context, 1240 Vector inMessages, int start_index, int range_per_page, int msgectr) 1241 { 1242 Vector vDescending = new Vector (); 1243 int msgSize = inMessages.size(); 1244 String msgeIndex1 = (String )getPortletSession(data, context, "msgeIndex"); 1245 int msgIndex = 0; 1246 try 1247 { 1248 msgIndex = Integer.parseInt(msgeIndex1); 1251 if (msgIndex > msgSize) 1252 { 1253 setPortletSession(data, context, "msgeIndex", null); 1254 } 1255 1256 } catch (NumberFormatException ne) 1257 { 1258 msgIndex = msgSize; 1259 setPortletSession(data, context, "msgeIndex", String 1260 .valueOf(msgSize)); 1261 } 1262 1263 for (int j = start_index; ((j <= range_per_page) && (j < msgectr)); j++) 1265 { 1266 vDescending.add(inMessages.get(msgIndex - 1)); 1267 msgIndex--; 1268 } 1269 context.put("inMessages", vDescending); 1270 1271 } 1272 1273 public String convertMessage(String msg) throws Exception 1275 { 1276 log.info("convert message"); 1277 StringBuffer sb = new StringBuffer (); 1278 1279 for (int i = 0; i < msg.length() - 1; i++) 1280 { 1281 char c = msg.charAt(i); 1282 if (c == '\n') 1283 { 1284 if (((msg.charAt(i + 1)) != '<') && (msg.charAt(i + 1) != ' ')) 1285 { 1286 log.info("new line"); 1287 sb.append("<br>"); 1288 } else 1289 { 1290 sb.append(c); 1291 } 1292 } else 1293 { 1294 sb.append(c); 1295 } 1296 } 1297 String returnString = sb.toString(); 1298 return returnString; 1299 } 1300 1301 1307 public String checkFormat(String msg) throws Exception 1308 { 1309 log.info("check format "); 1310 int startIndex = 0; 1311 int end = 0; 1312 1313 String testSubstring = null; 1314 1315 for (int i = 0; i < msg.length() - 6; i++) 1316 { 1317 String sub = msg.substring(i, i + 2); 1318 if (sub.equals("<A")) 1319 { 1320 startIndex = i; 1321 end = msg.indexOf(">", startIndex); 1322 StringBuffer sb = new StringBuffer (msg); 1323 sb.replace(startIndex, end + 1, " "); 1324 msg = sb.toString(); 1325 } 1326 } 1327 1328 for (int i = 0; i < msg.length() - 7; i++) 1329 { 1330 String sub = msg.substring(i, i + 7); 1331 if (sub.equals("style=\"")) 1332 { 1333 startIndex = i; 1334 end = msg.indexOf(">", startIndex); 1335 StringBuffer sb = new StringBuffer (msg); 1336 sb.replace(startIndex, end + 1, " "); 1337 msg = sb.toString(); 1338 } 1339 } 1340 1341 for (int j = 0; j < msg.length() - 6; j++) 1342 { 1343 String sub = msg.substring(j, j + 6); 1344 if (sub.equals("href=\"")) 1345 { 1346 startIndex = j; 1347 end = msg.indexOf(">", startIndex); 1348 StringBuffer sb = new StringBuffer (msg); 1349 sb.replace(startIndex, end + 1, " "); 1350 msg = sb.toString(); 1351 } 1352 } 1353 return msg; 1354 } 1355 1356 public void setMessageflag(Message message) throws Exception 1358 { 1359 log.info("set message flag"); 1360 1361 String msgeId = getMessageId(message); 1362 1363 Criteria cr = new Criteria(); 1364 cr.add(EmailInboxPeer.MESSAGE_ID, msgeId); 1365 1366 List vMsge = EmailInboxPeer.doSelect(cr); EmailInbox eMsge = (EmailInbox) vMsge.get(0); 1369 eMsge.setReadflag(1); 1370 EmailInboxPeer.doUpdate(eMsge); 1371 } 1372 1373 public void doNext(RunData data, Context context) throws Exception 1374 { 1375 1376 log.info("doNext"); 1378 String start_index1 = (String )getPortletSession(data, context, "start_index"); 1379 1380 String range_per_page1 = (String )getPortletSession(data, context, 1381 "range_per_page"); 1382 String cur_page1 = (String )getPortletSession(data, context, "cur_page"); 1383 String msgeIndex1 = (String )getPortletSession(data, context, "msgeIndex"); 1384 1385 Hashtable userInfo = this.getEmailUserInfo(data, context); 1386 String user = (String ) userInfo.get("username"); 1387 String pass = (String ) userInfo.get("password"); 1388 1389 int start_index = Integer.parseInt(start_index1); 1390 int range_per_page = Integer.parseInt(range_per_page1); 1391 int cur_page = Integer.parseInt(cur_page1); 1392 int msgeIndex = Integer.parseInt(msgeIndex1); 1393 1394 start_index = (range_per_page + 1); 1395 range_per_page = (range_per_page + maxPerPage); 1396 msgeIndex = msgeIndex - 10; 1397 log.info("msgeIndex in doNext " + msgeIndex); 1398 setPortletSession(data, context, "start_index", String 1399 .valueOf(start_index)); 1400 1401 setPortletSession(data, context, "range_per_page", String 1402 .valueOf(range_per_page)); 1403 setPortletSession(data, context, "msgeIndex", String 1404 .valueOf(msgeIndex)); 1405 cur_page = cur_page + 1; 1406 setPortletSession(data, context, "cur_page", String.valueOf(cur_page)); 1407 1408 setPortletSession(data, context, "inboxMessages", "yes"); 1409 1410 log.info("checkmessages ---------"); 1411 1413 } 1415 1416 public void doPrevious(RunData data, Context context) throws Exception 1417 { 1418 1419 1421 log.info("doPrevious"); 1422 String start_index1 = (String )getPortletSession(data, context, "start_index"); 1423 String range_per_page1 = (String )getPortletSession(data, context, 1424 "range_per_page"); 1425 String cur_page1 = (String )getPortletSession(data, context, "cur_page"); 1426 String msgeIndex1 = (String )getPortletSession(data, context, "msgeIndex"); 1427 1428 Hashtable userInfo = this.getEmailUserInfo(data, context); 1429 String user = (String ) userInfo.get("username"); 1430 String pass = (String ) userInfo.get("password"); 1431 1432 int start_index = Integer.parseInt(start_index1); 1433 int range_per_page = Integer.parseInt(range_per_page1); 1434 int cur_page = Integer.parseInt(cur_page1); 1435 int msgeIndex = Integer.parseInt(msgeIndex1); 1436 1437 start_index = start_index - maxPerPage; 1438 range_per_page = range_per_page - maxPerPage; 1439 msgeIndex = msgeIndex + 10; 1440 log.info("msgeIndex in previous " + msgeIndex); 1441 setPortletSession(data, context, "start_index", String 1442 .valueOf(start_index)); 1443 setPortletSession(data, context, "range_per_page", String 1444 .valueOf(range_per_page)); 1445 cur_page = cur_page - 1; 1446 setPortletSession(data, context, "cur_page", String.valueOf(cur_page)); 1447 1448 setPortletSession(data, context, "msgeIndex", String 1449 .valueOf(msgeIndex)); 1450 setPortletSession(data, context, "inboxMessages", "yes"); 1451 1452 } 1453 1454 1457 1458 public void doDownload(RunData data) 1459 { 1460 1461 log.info("[RJPY] Downloading Attachment"); 1462 1463 String messageid = data.getParameters().getString("messageid"); 1464 String filename = data.getParameters().getString("filename"); 1465 1466 try 1467 { 1468 log.info("inside try in download"); 1469 HttpServletResponse m_response = data.getResponse(); 1470 1471 Criteria crit = new Criteria(); 1472 crit.add(EmailInboxPeer.MESSAGE_ID, messageid); 1473 List vMsge = EmailInboxPeer.doSelect(crit); 1474 1475 if (vMsge.isEmpty()) 1476 { return; 1478 } else 1479 { EmailInbox email = (EmailInbox) EmailInboxPeer.doSelect(crit) 1481 .get(0); 1482 byte b[] = email.getAttachment(); 1483 m_response.setContentType("application/x-msdownload"); 1484 m_response.setContentLength(b.length); 1485 m_response.setHeader("Content-Disposition", 1486 "attachment; filename=" 1487 .concat(String.valueOf(filename))); 1488 m_response.getOutputStream().write(b, 0, b.length); 1489 } 1490 1491 } catch (Exception e) 1492 { 1493 log.error("Error in doDownload()", e); 1494 } 1495 } 1496 1497 public void DBdelete(RunData data, int current_index, Context context) 1498 throws Exception 1499 { 1500 Hashtable userInfo = this.getEmailUserInfo(data, context); 1501 String user = (String ) userInfo.get("username"); 1502 String pass = (String ) userInfo.get("password"); 1503 1504 Email email = new Email(user, pass, getPortletParameters(data, context)); 1505 Message message = email.getMessage(current_index); 1506 String messageId = email.getMessageId(message); 1507 email.close(); 1508 1509 Criteria crit = new Criteria(); 1510 crit.add(EmailInboxPeer.MESSAGE_ID, messageId); 1511 EmailInboxPeer.doDelete(crit); 1512 } 1513 1514 public void DBmultipleDelete(RunData data, String [] checkboxes, 1515 Context context) throws Exception 1516 { 1517 Hashtable userInfo = this.getEmailUserInfo(data, context); 1518 String user = (String ) userInfo.get("username"); 1519 String pass = (String ) userInfo.get("password"); 1520 1521 Email email = new Email(user, pass, getPortletParameters(data, context)); 1522 for (int i = 0; i < checkboxes.length; i++) 1523 { 1524 int current_index = Integer.parseInt(checkboxes[i]); 1525 Message message = email.getMessage(current_index); 1526 String messageId = email.getMessageId(message); 1527 email.close(); 1528 Criteria crit = new Criteria(); 1529 crit.add(EmailInboxPeer.MESSAGE_ID, messageId); 1530 EmailInboxPeer.doDelete(crit); 1531 } 1532 email.close(); 1533 } 1534 1535 public void doCreatenewfolder(RunData data, Context context) 1536 throws AuthenticationFailedException , NoSuchProviderException , 1537 Exception 1538 { 1539 setPortletSession(data, context, "showFolders", "no"); 1540 setPortletSession(data, context, "showInbox", "no"); 1541 setPortletSession(data, context, "compose", "no"); 1542 setPortletSession(data, context, "showContent", "no"); 1543 setPortletSession(data, context, "reply", "no"); 1544 setPortletSession(data, context, "forward", "no"); 1545 setPortletSession(data, context, "createfolder", "yes"); 1546 setPortletSession(data, context, "showmessagefolder", "no"); 1547 setPortletSession(data, context, "message_prompt", null); 1548 1549 } 1550 1551 public void doGetfoldername(RunData data, Context context) 1552 { 1553 1554 Hashtable userInfo = this.getEmailUserInfo(data, context); 1555 String user = (String ) userInfo.get("username"); 1556 String pass = (String ) userInfo.get("password"); 1557 try 1558 { 1559 Email email = new Email(user, pass, getPortletParameters(data, 1560 context)); 1561 String folder_name = data.getParameters().getString("folder_name"); 1562 email.doCreatefolder(folder_name); 1563 email.close(); 1564 } catch (Exception e) 1565 { 1566 log.error("Error in doGetfoldername()", e); 1567 } 1568 } 1569 1570 public void doGetfolderdest(RunData data, Context context) 1571 { 1572 String toFolder = data.getParameters().getString("foldername"); 1573 String fromFolder = (String )getPortletSession(data, context, "folder_name"); 1574 String [] checkboxes = null; 1575 checkboxes = data.getParameters().getStrings("check"); 1576 1577 Hashtable userInfo = this.getEmailUserInfo(data, context); 1578 String user = (String ) userInfo.get("username"); 1579 String pass = (String ) userInfo.get("password"); 1580 1581 try 1582 { 1583 Email email = new Email(user, pass, getPortletParameters(data, 1584 context)); 1585 if (checkboxes != null) 1586 { 1587 email.moveMessage(fromFolder, toFolder, checkboxes); 1588 } 1589 email.close(); 1590 doInbox(data, context); 1591 1592 } catch (Exception e) 1593 { 1594 log.error("Error in doGetfolderdest()", e); 1595 } 1596 } 1597 1598 public void doMovesinglemsge(RunData data, Context context) 1599 { 1600 String index = (String )getPortletSession(data, context, "index"); 1601 1602 String fromFolder = (String )getPortletSession(data, context, "folder_name"); 1603 1604 int current_index = Integer.parseInt(index); 1605 1606 Hashtable userInfo = this.getEmailUserInfo(data, context); 1607 String user = (String ) userInfo.get("username"); 1608 String pass = (String ) userInfo.get("password"); 1609 1610 try 1611 { 1612 Email email = new Email(user, pass, getPortletParameters(data, 1613 context)); 1614 String toFolder = data.getParameters().getString("foldername"); 1615 email.moveMessage(fromFolder, toFolder, current_index); 1616 email.close(); 1617 doInbox(data, context); 1618 } catch (Exception e) 1619 { 1620 log.error("Error in doMovesinglemsge()", e); 1621 } 1622 1623 } 1624 1625 public void doOpenmyfolder(RunData data, Context context) 1627 { 1628 setPortletSession(data, context, "showInbox", "no"); 1629 setPortletSession(data, context, "showmessagefolder", "yes"); 1630 setPortletSession(data, context, "createfolder", "no"); 1631 1632 Hashtable userInfo = this.getEmailUserInfo(data, context); 1633 String user = (String ) userInfo.get("username"); 1634 String pass = (String ) userInfo.get("password"); 1635 1636 String folder_name = data.getParameters().getString("folder_name"); 1637 1638 setPortletSession(data, context, "folder_name", folder_name); 1639 1640 try 1641 { 1642 Email email = new Email(user, pass, getPortletParameters(data, 1643 context)); 1644 String protocol = getPortletParameter(data, context, "protocol"); 1645 Vector message_folder = (Vector ) email.openMyfolder(folder_name, 1646 protocol); 1647 setPortletSession(data, context, "message_folder", message_folder); 1648 email.close(); 1649 } catch (Exception e) 1650 { 1651 log.error("Error in doOpenmyfolder()", e); 1652 } 1653 } 1654 1655 public void doFolderdelete(RunData data, Context context) 1656 { 1657 String folder_name = data.getParameters().getString("folder_name"); 1658 1659 Hashtable userInfo = this.getEmailUserInfo(data, context); 1660 String user = (String ) userInfo.get("username"); 1661 String pass = (String ) userInfo.get("password"); 1662 1663 try 1664 { 1665 Email email = new Email(user, pass, getPortletParameters(data, 1666 context)); 1667 email.folderDelete(folder_name); 1668 email.close(); 1669 1670 } catch (Exception e) 1671 { 1672 log.error("Error in doFolderdelete()", e); 1673 } 1674 } 1675 1676 1681 public Hashtable getEmailUserInfo(RunData rundata, Context context) 1682 { 1683 Hashtable userHash = new Hashtable (); 1684 String user = ""; 1685 String password = ""; 1686 String email = ""; 1687 String jetspeedUser = ""; 1688 String jetspeedPassword = ""; 1689 String jetspeedEmail = ""; 1690 try 1691 { 1692 user = rundata.getParameters().getString("emailUsername"); 1694 password = rundata.getParameters().getString("emailPassword"); 1695 email = rundata.getParameters().getString("addressFrom"); 1696 1697 if (email == null || email.equals("")) 1698 { 1699 email = jetspeedEmail = (JetspeedSecurity.getUser(rundata 1700 .getUser().getUserName()).getEmail()); 1701 } 1702 1703 if (user == null || user.equals("")) 1704 { 1705 1706 user = getPortletParameter(rundata, context, "username"); 1707 password = getPortletParameter(rundata, context, "password"); 1708 1709 String emailParam = getPortletParameter(rundata, context, "email_address"); 1711 if(emailParam != null && !emailParam.equals("")) 1712 { 1713 email = emailParam; 1714 } 1715 1716 if (user.equals("")) 1718 { 1719 1720 jetspeedUser = (JetspeedSecurity.getUser(rundata.getUser() 1721 .getUserName()).getUserName()); 1722 jetspeedPassword = (JetspeedSecurity.getUser(rundata 1723 .getUser().getUserName()).getPassword()); 1724 if (email.equals("")) 1725 { 1726 jetspeedEmail = (JetspeedSecurity.getUser(rundata 1727 .getUser().getUserName()).getEmail()); 1728 } 1729 user = jetspeedUser; 1731 password = jetspeedPassword; 1732 email = jetspeedEmail; 1733 1734 } 1735 } 1736 1737 userHash.put("username", user); 1738 userHash.put("password", password); 1739 userHash.put("email", email); 1740 } catch (Exception e) 1741 { 1742 log.error(e); 1743 } 1744 return userHash; 1745 } 1746 1747 1751 public String getPortletParameter(RunData data, Context context, 1752 String paramName) 1753 { 1754 String ret = null; 1755 try 1756 { 1757 1758 ret = PortletConfigState.getParameter(this.getPortlet(context), 1759 data, paramName, null); 1760 } catch (Exception e) 1761 { 1762 ret = null; 1763 } 1764 return ret; 1765 } 1766 1767 1768 1769 public void setPortletSession(RunData data,Context context,String paramName, Object value) 1770 { 1771 1772 1773 PortletSessionState.setAttribute(this.getPortlet(context),data,paramName,value); 1774 1775 } 1776 1777 1778 public Object getPortletSession(RunData data,Context context,String paramName) 1779 { 1780 1781 1782 return (Object )PortletSessionState.getAttribute(this.getPortlet(context),data,paramName); 1783 1784 } 1785 1786 public Hashtable getPortletParameters(RunData data, Context context) 1787 { 1788 1789 Hashtable param = new Hashtable (); 1790 try 1791 { 1792 1796 param.put("hostname", 1797 getPortletParameter(data, context, "hostname")); 1798 param.put("protocol", 1799 getPortletParameter(data, context, "protocol")); 1800 param.put("smtp_user", getPortletParameter(data, context, 1801 "smtp_user")); 1802 param.put("smtp_port", getPortletParameter(data, context, 1803 "smtp_port")); 1804 param.put("smtp_conn_timeout", getPortletParameter(data, context, 1805 "smtp_conn_timeout")); 1806 param.put("smtp_timeout", getPortletParameter(data, context, 1807 "smtp_timeout")); 1808 param.put("smtp_from", getPortletParameter(data, context, 1809 "smtp_from")); 1810 param.put("smtp_localhost", getPortletParameter(data, context, 1811 "smtp_localhost")); 1812 param.put("smtp_ehlo", getPortletParameter(data, context, 1813 "smtp_ehlo")); 1814 param.put("smtp_auth", getPortletParameter(data, context, 1815 "smtp_auth")); 1816 param.put("smtp_dsn_notify", getPortletParameter(data, context, 1817 "smtp_dsn_notify")); 1818 param.put("smtp_dsn_ret", getPortletParameter(data, context, 1819 "smtp_dsn_ret")); 1820 param.put("smtp_allow8bitmime", getPortletParameter(data, context, 1821 "smtp_allow8bitmime")); 1822 param.put("smtp_send_partial", getPortletParameter(data, context, 1823 "smtp_send_partial")); 1824 param.put("smtp_sasl_realm", getPortletParameter(data, context, 1825 "smtp_sasl_realm")); 1826 param.put("smtp_quit_wait", getPortletParameter(data, context, 1827 "smtp_quit_wait")); 1828 param.put("imap_port", getPortletParameter(data, context, 1829 "imap_port")); 1830 param.put("imap_partial_fetch", getPortletParameter(data, context, 1831 "imap_partial_fetch")); 1832 param.put("imap_fetch_size", getPortletParameter(data, context, 1833 "imap_fetch_size")); 1834 param.put("imap_timeout", getPortletParameter(data, context, 1835 "imap_timeout")); 1836 param.put("imap_host", getPortletParameter(data, context, 1837 "imap_host")); 1838 1839 } catch (Exception e) 1840 { 1841 log.error("Error in getPortletParameters()", e); 1842 } 1843 1844 return param; 1845 } 1846 1847} | Popular Tags |