1 7 package org.contineo.actions.communication; 8 9 import java.util.Collection ; 10 import java.util.Date ; 11 import javax.servlet.http.HttpServletRequest ; 12 import javax.servlet.http.HttpServletResponse ; 13 import javax.servlet.http.HttpSession ; 14 import org.apache.log4j.Level; 15 import org.apache.log4j.Logger; 16 import org.apache.struts.action.Action; 17 import org.apache.struts.action.ActionError; 18 import org.apache.struts.action.ActionErrors; 19 import org.apache.struts.action.ActionForm; 20 import org.apache.struts.action.ActionForward; 21 import org.apache.struts.action.ActionMapping; 22 import org.apache.struts.action.ActionMessage; 23 import org.apache.struts.action.ActionMessages; 24 import org.contineo.admin.Menu; 25 import org.contineo.admin.dao.MenuDAO; 26 import org.contineo.communication.Attachment; 27 import org.contineo.communication.EMail; 28 import org.contineo.communication.EMailAccount; 29 import org.contineo.communication.EMailSender; 30 import org.contineo.communication.Recipient; 31 import org.contineo.communication.dao.EMailAccountDAO; 32 import org.contineo.communication.dao.EMailDAO; 33 import org.contineo.core.FileBean; 34 import org.contineo.core.LoggingManager; 35 import org.contineo.core.SessionManagement; 36 import org.contineo.core.config.MimeTypeConfigurator; 37 import org.contineo.core.config.SettingConfigurator; 38 import org.contineo.forms.EMailForm; 39 40 46 public class SaveEMailAction extends Action { 47 48 52 private Logger logger; 53 54 60 private SettingConfigurator conf; 61 62 68 private EMail email; 69 70 private String username; 71 72 75 public SaveEMailAction() { 76 logger = LoggingManager.getLogger(this.getClass()); 77 conf = new SettingConfigurator(); 78 username = ""; 79 } 80 81 public ActionForward execute(ActionMapping mapping, 82 ActionForm form, HttpServletRequest request, 83 HttpServletResponse response) { 84 ActionForward actionForward = new ActionForward(); 85 HttpSession session = request.getSession(); 86 ActionErrors errors = new ActionErrors(); 87 ActionMessages messages = new ActionMessages(); 88 if (SessionManagement.isValid(session)) { 89 try { 90 username = (String )session.getAttribute("authuser"); 91 EMailForm emailForm = (EMailForm)form; 92 email = new EMail(); 93 EMailDAO emailDao = new EMailDAO(); 94 EMailAccountDAO accountDao = new EMailAccountDAO(); 95 EMailAccount account = accountDao.findByPrimaryKey(Integer.parseInt(emailForm.getAuthor())); 96 email.setAuthor(account.getUserName()); 97 email.setAuthorAddress(account.getMailAddress()); 98 Recipient recipient = new Recipient(); 99 recipient.setAddress(emailForm.getRecipient()); 100 email.addRecipient(recipient); 101 email.setFolder("outbox"); 102 email.setMessageText(emailForm.getText()); 103 email.setRead(1); 104 email.setSentDate(String.valueOf(new Date ().getTime())); 105 email.setSubject(emailForm.getSubject()); 106 email.setUserName(username); 107 emailDao.store(email); 108 String udir = conf.getValue("userdir"); 109 String maildir = udir + "/" + username + "/mails/" + String.valueOf(email.getMessageId()) + "/"; 110 FileBean.createDir(maildir); 111 FileBean.writeFile(email.getMessageText(), maildir + "email.mail"); 112 Attachment attachment = new Attachment(); 113 attachment.setFilename("email.mail"); 114 attachment.setPartId(1); 115 attachment.setMimeType("text/plain"); 116 attachment.setIcon("pages/images/textdoc.gif"); 117 if (emailForm.getAtt0() != null && !emailForm.getAtt0().equals("")) { 118 createAttachment(Integer.parseInt(emailForm.getAtt0()), 2); 119 if (emailForm.getAtt1() != null && !emailForm.getAtt1().equals("")) { 120 createAttachment(Integer.parseInt(emailForm.getAtt1()), 3); 121 if (emailForm.getAtt2() != null && !emailForm.getAtt2().equals("")) { 122 createAttachment(Integer.parseInt(emailForm.getAtt2()), 4); 123 if (emailForm.getAtt3() != null && !emailForm.getAtt3().equals("")) { 124 createAttachment(Integer.parseInt(emailForm.getAtt3()), 5); 125 if (emailForm.getAtt4() != null && !emailForm.getAtt4().equals("")) { 126 createAttachment(Integer.parseInt(emailForm.getAtt4()), 6); 127 } 128 } 129 } 130 } 131 } 132 emailDao.store(email); 133 try { 134 EMailSender sender = new EMailSender(); 135 sender.send(account, email); 136 messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("msg.action.saveemail")); 137 } catch (Exception ex) { 138 if (logger.isEnabledFor(Level.ERROR)) 139 logger.error(ex.getMessage()); 140 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.action.saveemail")); 141 } 142 Collection accounts = accountDao.findByUserName(username); 143 request.setAttribute("emailform", emailForm); 144 request.setAttribute("accounts", accounts); 145 } catch (Exception e) { 146 if (logger.isEnabledFor(Level.ERROR)) 147 logger.error(e.getMessage()); 148 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.action.saveemail")); 149 } 150 actionForward = mapping.findForward("addemail"); 151 saveErrors(request, errors); 152 saveMessages(request, messages); 153 } else 154 actionForward = mapping.findForward("invalid"); 155 return actionForward; 156 } 157 158 private void createAttachment(int menuid, int partid) { 159 Attachment att = new Attachment(); 160 MenuDAO menuDao = new MenuDAO(); 161 Menu menu = menuDao.findByPrimaryKey(menuid); 162 if (menuDao.isReadEnable(menu.getMenuId(), username)) { 163 att.setPartId(partid); 164 att.setIcon(menu.getMenuIcon()); 165 att.setFilename(menu.getMenuRef()); 166 String extension = menu.getMenuRef().substring(menu.getMenuRef().lastIndexOf(".") + 1); 167 MimeTypeConfigurator mtc = new MimeTypeConfigurator(); 168 String mimetype = mtc.getMimeApp(extension); 169 if (mimetype == null || mimetype.equals("")) 170 mimetype = "application/octet-stream"; 171 att.setMimeType(mimetype); 172 String docdir = conf.getValue("docdir"); 173 String doc = docdir + "/" + menu.getMenuPath() + "/" + menu.getMenuId() + "/" + menu.getMenuRef(); 174 String userdir = conf.getValue("userdir"); 175 String mail = userdir + "/" + username + "/mails/" + String.valueOf(email.getMessageId()) + "/" ; 176 FileBean.copyFile(doc, mail + menu.getMenuRef()); 177 if (att != null) 178 email.addAttachment(att); 179 } 180 } 181 } 182
| Popular Tags
|