1 114 package com.ivata.groupware.business.mail.struts; 115 116 import java.io.File ; 117 118 import javax.mail.MessagingException ; 119 import javax.servlet.http.HttpServletRequest ; 120 import javax.servlet.http.HttpServletResponse ; 121 import javax.servlet.http.HttpSession ; 122 123 import org.apache.struts.action.ActionErrors; 124 import org.apache.struts.action.ActionForm; 125 import org.apache.struts.action.ActionMapping; 126 127 import com.ivata.groupware.business.mail.Mail; 128 import com.ivata.groupware.business.mail.message.MessageDO; 129 import com.ivata.groupware.business.mail.server.NoMailServerException; 130 import com.ivata.groupware.business.mail.session.MailSession; 131 import com.ivata.mask.MaskFactory; 132 import com.ivata.mask.util.CollectionHandling; 133 import com.ivata.mask.util.StringHandling; 134 import com.ivata.mask.util.SystemException; 135 import com.ivata.mask.util.ThrowableHandling; 136 import com.ivata.mask.web.struts.MaskAction; 137 import com.ivata.mask.web.struts.MaskAuthenticator; 138 139 140 149 public class ComposeAction extends MaskAction { 150 Mail mail; 151 159 public ComposeAction(Mail mail, MaskFactory maskFactory, 160 MaskAuthenticator authenticator) { 161 super(maskFactory, authenticator); 162 this.mail = mail; 163 } 164 187 public String onConfirm(final ActionMapping mapping, 188 final ActionErrors errors, 189 final ActionForm form, 190 final HttpServletRequest request, 191 final HttpServletResponse response, 192 final HttpSession session, 193 final String defaultForward) throws SystemException { 194 ComposeForm composeForm = (ComposeForm) form; 195 MailSession mailSession; 196 try { 197 mailSession = (MailSession) session.getAttribute("securitySession"); 198 } catch (ClassCastException e) { 199 session.setAttribute("mailServerException", 200 new NoMailServerException(e)); 201 return "serverError"; 202 } 203 try { 204 mail.send(mailSession, composeForm.getMessage()); 205 } catch (SystemException e) { 206 Throwable cause = ThrowableHandling.getCause(e); 209 if (cause instanceof MessagingException ) { 210 composeForm.setMessagingException((MessagingException )cause); 211 return null; 212 } else { 213 throw e; 215 } 216 } 217 return defaultForward; 218 } 219 220 240 public void clear(final ActionMapping mapping, 241 final ActionErrors errors, 242 final ActionForm form, 243 final HttpServletRequest request, 244 final HttpServletResponse response, 245 final HttpSession session) throws SystemException { 246 session.removeAttribute("mailComposeForm"); 247 } 248 249 272 public String execute(final ActionMapping mapping, 273 final ActionErrors errors, 274 final ActionForm form, 275 final HttpServletRequest request, 276 final HttpServletResponse response, 277 final HttpSession session) throws SystemException { 278 ComposeForm composeForm = (ComposeForm) form; 279 MailSession mailSession = (MailSession) session.getAttribute("securitySession"); 280 281 if (mailSession == null) { 282 request.setAttribute("mailServerException", 283 new NoMailServerException(null)); 284 285 return "serverError"; 286 } 287 288 MessageDO messageDO = composeForm.getMessage(); 289 290 if (!StringHandling.isNullOrEmpty(composeForm.getAttach())) { 291 messageDO = mail.addMessageToDraftsFolder(mailSession, messageDO); 292 messageDO = mail.appendAttachments(mailSession, 293 messageDO.getMessageID(), 294 CollectionHandling.convertFromLines( 295 composeForm.getAttach(), File.pathSeparator)); 296 composeForm.setMessage(messageDO); 297 } 298 299 return null; 300 } 301 } 302 | Popular Tags |