in blocks/cocoon-mail/cocoon-mail-impl/src/main/java/org/apache/cocoon/acting/Sendmail.java [157:294]
public Map act(Redirector redirector,
SourceResolver resolver,
Map objectModel,
String source,
Parameters parameters)
throws Exception {
boolean success = false;
Map status = null;
MailSender mms = null;
try {
Request request = ObjectModelHelper.getRequest(objectModel);
// FIXME Remove support of old smtphost parameter
String smtpHost = parameters.getParameter("smtp-host", parameters.getParameter("smtphost", this.smtpHost));
String smtpUser = parameters.getParameter("smtp-user", this.smtpUser);
String smtpPassword = parameters.getParameter("smtp-password", this.smtpPassword);
// Empty parameter means absent parameter
if ("".equals(smtpHost)) {
smtpHost = this.smtpHost;
}
if ("".equals(smtpUser)) {
smtpUser = this.smtpUser;
}
if ("".equals(smtpPassword)) {
smtpPassword = this.smtpPassword;
}
mms = (MailSender) this.manager.lookup(MailSender.ROLE);
// Initialize non-default session if host or user specified.
if (smtpHost != null || smtpUser != null) {
mms.setSmtpHost(smtpHost, smtpUser, smtpPassword);
}
if (parameters.isParameter("from")) {
mms.setFrom(parameters.getParameter("from", null));
}
if (parameters.isParameter("to")) {
mms.setTo(parameters.getParameter("to", null));
}
if (parameters.isParameter("replyTo")) {
mms.setReplyTo(parameters.getParameter("replyTo", null));
}
if (parameters.isParameter("cc")) {
mms.setCc(parameters.getParameter("cc", null));
}
if (parameters.isParameter("bcc")) {
mms.setBcc(parameters.getParameter("bcc", null));
}
if (parameters.isParameter("subject")) {
mms.setSubject(parameters.getParameter("subject", null));
}
String bodyURL = parameters.getParameter("src", "");
String body = parameters.getParameter("body", "");
if (bodyURL.length() > 0) {
String type = null;
if (parameters.isParameter("srcMimeType")) {
type = parameters.getParameter("srcMimeType", null);
}
mms.setBodyURL(bodyURL, type);
} else if (body.length() > 0) {
String type = null;
String charset = parameters.getParameter("charset", "");
if (charset.length() > 0) {
type = "text/plain; charset=" + charset;
}
mms.setBody(body, type);
}
if (parameters.isParameter("attachments")) {
String fileName[] = StringUtils.split(parameters.getParameter("attachments"));
for (int i = 0; i < fileName.length; i++) {
String srcName = fileName[i];
if (srcName.indexOf(":") == -1) {
Object obj = request.get(srcName);
mms.addAttachment(obj);
if (getLogger().isDebugEnabled()) {
getLogger().debug("request-attachment: " + obj);
}
} else {
mms.addAttachmentURL(srcName);
if (getLogger().isDebugEnabled()) {
getLogger().debug("sitemap-attachment: " + srcName);
}
}
}
}
mms.send();
success = true;
status = new HashMap(3);
status.put(Sendmail.STATUS, "success");
} catch (AddressException e) {
getLogger().warn("AddressException: ", e);
status = new HashMap(3);
status.put(Sendmail.STATUS, "user-error");
status.put(Sendmail.MESSAGE, e.getMessage());
} catch (MessagingException e) {
getLogger().warn("MessagingException: " +
"An error occured while sending email.", e);
status = new HashMap(3);
status.put(Sendmail.STATUS, "server-error");
status.put(Sendmail.MESSAGE,
"An error occured while sending email: " + e.getMessage());
} catch (ServiceException e) {
getLogger().error("ServiceException: " +
"An error occured while initializing.", e);
status = new HashMap(3);
status.put(Sendmail.STATUS, "server-error");
status.put(Sendmail.MESSAGE,
"An exception was thrown while sending email: " + e.getMessage());
} catch (Exception e) {
getLogger().error("An exception was thrown while sending email.", e);
status = new HashMap(3);
status.put(Sendmail.STATUS, "server-error");
status.put(Sendmail.MESSAGE, "An exception was thrown while sending email.");
} finally {
ObjectModelHelper.getRequest(objectModel).setAttribute(Sendmail.REQUEST_ATTRIBUTE,
status);
this.manager.release(mms);
}
return success ? status : null;
}