List of usage examples for org.springframework.mail.javamail MimeMessageHelper MimeMessageHelper
public MimeMessageHelper(MimeMessage mimeMessage, int multipartMode) throws MessagingException
From source file:org.apache.syncope.core.notification.NotificationJob.java
public TaskExec executeSingle(final NotificationTask task) { init();/*from ww w . ja v a2 s. c o m*/ TaskExec execution = new TaskExec(); execution.setTask(task); execution.setStartDate(new Date()); boolean retryPossible = true; if (StringUtils.isBlank(task.getSubject()) || task.getRecipients().isEmpty() || StringUtils.isBlank(task.getHtmlBody()) || StringUtils.isBlank(task.getTextBody())) { String message = "Could not fetch all required information for sending e-mails:\n" + task.getRecipients() + "\n" + task.getSender() + "\n" + task.getSubject() + "\n" + task.getHtmlBody() + "\n" + task.getTextBody(); LOG.error(message); execution.setStatus(Status.NOT_SENT.name()); retryPossible = false; if (task.getTraceLevel().ordinal() >= TraceLevel.FAILURES.ordinal()) { execution.setMessage(message); } } else { if (LOG.isDebugEnabled()) { LOG.debug("About to send e-mails:\n" + task.getRecipients() + "\n" + task.getSender() + "\n" + task.getSubject() + "\n" + task.getHtmlBody() + "\n" + task.getTextBody() + "\n"); } for (String to : task.getRecipients()) { try { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(to); helper.setFrom(task.getSender()); helper.setSubject(task.getSubject()); helper.setText(task.getTextBody(), task.getHtmlBody()); mailSender.send(message); execution.setStatus(Status.SENT.name()); StringBuilder report = new StringBuilder(); switch (task.getTraceLevel()) { case ALL: report.append("FROM: ").append(task.getSender()).append('\n').append("TO: ").append(to) .append('\n').append("SUBJECT: ").append(task.getSubject()).append('\n') .append('\n').append(task.getTextBody()).append('\n').append('\n') .append(task.getHtmlBody()).append('\n'); break; case SUMMARY: report.append("E-mail sent to ").append(to).append('\n'); break; case FAILURES: case NONE: default: } if (report.length() > 0) { execution.setMessage(report.toString()); } auditManager.audit(AuditElements.EventCategoryType.TASK, "notification", null, "send", Result.SUCCESS, null, null, task, "Successfully sent notification to " + to); } catch (Exception e) { LOG.error("Could not send e-mail", e); execution.setStatus(Status.NOT_SENT.name()); if (task.getTraceLevel().ordinal() >= TraceLevel.FAILURES.ordinal()) { execution.setMessage(ExceptionUtil.getFullStackTrace(e)); } auditManager.audit(AuditElements.EventCategoryType.TASK, "notification", null, "send", Result.FAILURE, null, null, task, "Could not send notification to " + to, e); } execution.setEndDate(new Date()); } } if (hasToBeRegistered(execution)) { execution = notificationManager.storeExec(execution); if (retryPossible && (Status.valueOf(execution.getStatus()) == Status.NOT_SENT)) { handleRetries(execution); } } else { notificationManager.setTaskExecuted(execution.getTask().getId(), true); } return execution; }
From source file:org.apache.syncope.core.provisioning.java.job.notification.NotificationJobDelegate.java
@Transactional public TaskExec executeSingle(final NotificationTask task) { TaskExec execution = entityFactory.newEntity(TaskExec.class); execution.setTask(task);/*from ww w . ja v a 2 s. co m*/ execution.setStart(new Date()); boolean retryPossible = true; if (StringUtils.isBlank(task.getSubject()) || task.getRecipients().isEmpty() || StringUtils.isBlank(task.getHtmlBody()) || StringUtils.isBlank(task.getTextBody())) { String message = "Could not fetch all required information for sending e-mails:\n" + task.getRecipients() + "\n" + task.getSender() + "\n" + task.getSubject() + "\n" + task.getHtmlBody() + "\n" + task.getTextBody(); LOG.error(message); execution.setStatus(NotificationJob.Status.NOT_SENT.name()); retryPossible = false; if (task.getTraceLevel().ordinal() >= TraceLevel.FAILURES.ordinal()) { execution.setMessage(message); } } else { if (LOG.isDebugEnabled()) { LOG.debug("About to send e-mails:\n" + task.getRecipients() + "\n" + task.getSender() + "\n" + task.getSubject() + "\n" + task.getHtmlBody() + "\n" + task.getTextBody() + "\n"); } for (String to : task.getRecipients()) { try { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(to); helper.setFrom(task.getSender()); helper.setSubject(task.getSubject()); helper.setText(task.getTextBody(), task.getHtmlBody()); mailSender.send(message); execution.setStatus(NotificationJob.Status.SENT.name()); StringBuilder report = new StringBuilder(); switch (task.getTraceLevel()) { case ALL: report.append("FROM: ").append(task.getSender()).append('\n').append("TO: ").append(to) .append('\n').append("SUBJECT: ").append(task.getSubject()).append('\n') .append('\n').append(task.getTextBody()).append('\n').append('\n') .append(task.getHtmlBody()).append('\n'); break; case SUMMARY: report.append("E-mail sent to ").append(to).append('\n'); break; case FAILURES: case NONE: default: } if (report.length() > 0) { execution.setMessage(report.toString()); } notificationManager.createTasks(AuditElements.EventCategoryType.TASK, "notification", null, "send", AuditElements.Result.SUCCESS, null, null, task, "Successfully sent notification to " + to); } catch (Exception e) { LOG.error("Could not send e-mail", e); execution.setStatus(NotificationJob.Status.NOT_SENT.name()); if (task.getTraceLevel().ordinal() >= TraceLevel.FAILURES.ordinal()) { execution.setMessage(ExceptionUtils2.getFullStackTrace(e)); } notificationManager.createTasks(AuditElements.EventCategoryType.TASK, "notification", null, "send", AuditElements.Result.FAILURE, null, null, task, "Could not send notification to " + to, e); } execution.setEnd(new Date()); } } if (hasToBeRegistered(execution)) { execution = notificationManager.storeExec(execution); if (retryPossible && (NotificationJob.Status.valueOf(execution.getStatus()) == NotificationJob.Status.NOT_SENT)) { handleRetries(execution); } } else { notificationManager.setTaskExecuted(execution.getTask().getKey(), true); } return execution; }
From source file:org.apereo.portal.portlets.account.EmailPasswordResetNotificationImpl.java
@Override public void sendNotification(URL resetUrl, ILocalAccountPerson account, Locale locale) { log.debug("Sending password reset instructions to user with url {}", resetUrl.toString()); try {// w ww. j av a 2 s .c o m MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); String email = (String) account.getAttributeValue(ILocalAccountPerson.ATTR_MAIL); String subject = messageSource.getMessage(subjectMessageKey, new Object[] {}, locale); String body = formatBody(resetUrl, account, locale); helper.addTo(email); helper.setText(body, true); helper.setSubject(subject); helper.setFrom(portalEmailAddress, messageSource.getMessage("portal.name", new Object[] {}, locale)); log.debug("Sending message to {} from {} subject {}", email, Arrays.toString(message.getFrom()), message.getSubject()); this.mailSender.send(helper.getMimeMessage()); } catch (Exception e) { log.error("Unable to send password reset email", e); } }
From source file:org.craftercms.commons.mail.impl.EmailFactoryImpl.java
protected MimeMessage createMessage(String from, String[] to, String[] cc, String[] bcc, String replyTo, String subject, String body, boolean html, File... attachments) throws EmailException { boolean addAttachments = ArrayUtils.isNotEmpty(attachments); MimeMessageHelper messageHelper;/*from ww w . j a va 2s.com*/ try { if (addAttachments) { messageHelper = new MimeMessageHelper(mailSender.createMimeMessage(), true); } else { messageHelper = new MimeMessageHelper(mailSender.createMimeMessage()); } messageHelper.setFrom(from); if (to != null) { messageHelper.setTo(to); } if (cc != null) { messageHelper.setCc(cc); } if (bcc != null) { messageHelper.setBcc(bcc); } if (replyTo != null) { messageHelper.setReplyTo(replyTo); } messageHelper.setSubject(subject); messageHelper.setText(body, html); if (addAttachments) { for (File attachment : attachments) { messageHelper.addAttachment(attachment.getName(), attachment); } } } catch (AddressException e) { throw new EmailAddressException(e); } catch (MessagingException e) { throw new EmailPreparationException(e); } logger.debug(LOG_KEY_MIME_MSG_CREATED, from, StringUtils.join(to, ','), StringUtils.join(cc, ','), StringUtils.join(bcc, ','), subject, body); return messageHelper.getMimeMessage(); }
From source file:org.craftercms.social.services.system.EmailService.java
public void sendEmail(final Profile toSend, final StringWriter writer, final String subject, final String contextId) throws SocialException { Map<String, Object> emailSettings = getEmailSettings(contextId); JavaMailSender sender = getSender(contextId); MimeMessage message = sender.createMimeMessage(); String realSubject = subject; if (StringUtils.isBlank(realSubject)) { realSubject = generateSubjectString(emailSettings.get("subject").toString()); }//from w w w . j av a 2 s. c om try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(toSend.getEmail()); helper.setReplyTo(emailSettings.get("replyTo").toString()); helper.setFrom(emailSettings.get("from").toString()); helper.setSubject(realSubject); helper.setPriority(NumberUtils.toInt(emailSettings.get("priority").toString(), 4)); helper.setText(writer.toString(), true); message.setHeader("Message-ID", String.format("[%s]-%s-%s-%s", RandomStringUtils.randomAlphanumeric(5), contextId, realSubject, toSend.getId())); sender.send(message); } catch (MessagingException e) { throw new SocialException("Unable to send Email to " + toSend.getEmail(), e); } }
From source file:org.jasig.portal.portlets.account.UserAccountHelper.java
public void sendLoginToken(HttpServletRequest request, ILocalAccountPerson account) { IPerson person = personManager.getPerson(request); final Locale[] userLocales = localeStore.getUserLocales(person); LocaleManager localeManager = new LocaleManager(person, userLocales); Locale locale = localeManager.getLocales()[0]; IPortalUrlBuilder builder = urlProvider.getPortalUrlBuilderByPortletFName(request, "reset-password", UrlType.RENDER);//from www .ja v a2 s.co m IPortletUrlBuilder portletUrlBuilder = builder.getTargetedPortletUrlBuilder(); portletUrlBuilder.addParameter("username", account.getName()); portletUrlBuilder.addParameter("loginToken", (String) account.getAttributeValue("loginToken")); portletUrlBuilder.setPortletMode(PortletMode.VIEW); portletUrlBuilder.setWindowState(WindowState.MAXIMIZED); StringBuffer url = new StringBuffer(); url.append(request.getScheme()); url.append("://").append(request.getServerName()); int port = request.getServerPort(); if (port != 80 && port != 443) { url.append(":").append(port); } url.append(builder.getUrlString()); log.debug("Sending password reset instructions to user with url " + url.toString()); String emailAddress = (String) account.getAttributeValue("mail"); final STGroup group = new STGroupDir(templateDir, '$', '$'); final ST template = group.getInstanceOf(passwordResetTemplate); template.add("displayName", person.getAttribute("displayName")); template.add("url", url.toString()); MimeMessage message = mailSender.createMimeMessage(); String body = template.render(); try { MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(emailAddress); helper.setText(body, true); helper.setSubject(messageSource.getMessage("reset.your.password", new Object[] {}, locale)); helper.setFrom(portalEmailAddress, messageSource.getMessage("portal.name", new Object[] {}, locale)); log.debug("Sending message to " + emailAddress + " from " + Arrays.toString(message.getFrom()) + " subject " + message.getSubject()); this.mailSender.send(message); } catch (MailException e) { log.error("Unable to send password reset email ", e); } catch (MessagingException e) { log.error("Unable to send password reset email ", e); } catch (UnsupportedEncodingException e) { log.error("Unable to send password reset email ", e); } }
From source file:org.mifosplatform.infrastructure.reportmailingjob.service.ReportMailingJobEmailServiceImpl.java
@Override public void sendEmailWithAttachment(ReportMailingJobEmailData reportMailingJobEmailData) { try {//from w w w .jav a 2 s . c o m // get all ReportMailingJobConfiguration objects from the database this.reportMailingJobConfigurationDataCollection = this.reportMailingJobConfigurationReadPlatformService .retrieveAllReportMailingJobConfigurations(); JavaMailSenderImpl javaMailSenderImpl = new JavaMailSenderImpl(); javaMailSenderImpl.setHost(this.getReportSmtpServer()); javaMailSenderImpl.setPort(this.getRerportSmtpPort()); javaMailSenderImpl.setUsername(this.getReportSmtpUsername()); javaMailSenderImpl.setPassword(this.getReportSmtpPassword()); javaMailSenderImpl.setJavaMailProperties(this.getJavaMailProperties()); MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage(); // use the true flag to indicate you need a multipart message MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setTo(reportMailingJobEmailData.getTo()); mimeMessageHelper.setFrom(this.getReportSmtpFromAddress()); mimeMessageHelper.setText(reportMailingJobEmailData.getText()); mimeMessageHelper.setSubject(reportMailingJobEmailData.getSubject()); if (reportMailingJobEmailData.getAttachment() != null) { mimeMessageHelper.addAttachment(reportMailingJobEmailData.getAttachment().getName(), reportMailingJobEmailData.getAttachment()); } javaMailSenderImpl.send(mimeMessage); } catch (MessagingException e) { // handle the exception e.printStackTrace(); } }
From source file:org.openvpms.web.component.error.ErrorReporter.java
/** * Reports an error./*from w w w. j a va2 s . co m*/ * * @param report the error report * @param replyTo the reply-to email address. May be {@code null} */ public void report(final ErrorReport report, String replyTo) { try { JavaMailSender sender = ServiceHelper.getMailSender(); MimeMessage message = sender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); String subject = report.getVersion() + ": " + report.getMessage(); helper.setSubject(subject); helper.setFrom(from); helper.setTo(to); if (!StringUtils.isEmpty(replyTo)) { helper.setReplyTo(replyTo); } String text = getText(report); if (text != null) { helper.setText(text); } InputStreamSource source = new InputStreamSource() { public InputStream getInputStream() { return new ByteArrayInputStream(report.toXML().getBytes()); } }; helper.addAttachment("error-report.xml", source, DocFormats.XML_TYPE); sender.send(message); } catch (Throwable exception) { log.error(exception, exception); ErrorDialog.show(Messages.get("errorreportdialog.senderror")); } }
From source file:org.openvpms.web.workspace.reporting.reminder.ReminderEmailProcessor.java
/** * Processes a list of reminder events./*from ww w.j a v a2 s . c om*/ * * @param events the events * @param shortName the report archetype short name, used to select the document template if none specified * @param documentTemplate the document template to use. May be {@code null} */ protected void process(List<ReminderEvent> events, String shortName, DocumentTemplate documentTemplate) { ReminderEvent event = events.get(0); Contact contact = event.getContact(); DocumentTemplateLocator locator = new ContextDocumentTemplateLocator(documentTemplate, shortName, getContext()); documentTemplate = locator.getTemplate(); if (documentTemplate == null) { throw new ReportingException(ReminderMissingDocTemplate); } try { EmailAddress from = addresses.getAddress(event.getCustomer()); IMObjectBean bean = new IMObjectBean(contact); String to = bean.getString("emailAddress"); MimeMessage message = sender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setValidateAddresses(true); helper.setFrom(from.getAddress(), from.getName()); helper.setTo(to); String subject = documentTemplate.getEmailSubject(); if (StringUtils.isEmpty(subject)) { subject = documentTemplate.getName(); } String body = documentTemplate.getEmailText(); if (StringUtils.isEmpty(body)) { throw new ReportingException(TemplateMissingEmailText, documentTemplate.getName()); } helper.setText(body); final Document reminder = createReport(events, documentTemplate); final DocumentHandler handler = handlers.get(reminder.getName(), reminder.getArchetypeId().getShortName(), reminder.getMimeType()); helper.setSubject(subject); helper.addAttachment(reminder.getName(), new InputStreamSource() { public InputStream getInputStream() { return handler.getContent(reminder); } }); sender.send(message); } catch (ArchetypeServiceException exception) { throw exception; } catch (ReminderProcessorException exception) { throw exception; } catch (ReportingException exception) { throw exception; } catch (Throwable exception) { throw new ReportingException(FailedToProcessReminder, exception, exception.getMessage()); } }
From source file:org.openvpms.web.workspace.reporting.statement.StatementEmailProcessor.java
/** * Processes a statement.// w w w. j av a 2 s.c o m * * @param statement the event to process * @throws OpenVPMSException for any error */ public void process(Statement statement) { try { MimeMessage message = sender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); List<Contact> contacts = statement.getContacts(); if (contacts.isEmpty()) { throw new StatementProcessorException(NoContact, statement.getCustomer()); } Contact contact = contacts.get(0); IMObjectBean bean = new IMObjectBean(contact); if (!bean.isA(ContactArchetypes.EMAIL)) { throw new StatementProcessorException(NoContact, statement.getCustomer()); } String to = bean.getString("emailAddress"); EmailAddress email = addresses.getAddress(statement.getCustomer()); helper.setFrom(email.getAddress(), email.getName()); helper.setTo(to); helper.setSubject(emailSubject); helper.setText(emailText); Iterable<IMObject> objects = getActs(statement); Reporter reporter = ReporterFactory.create(objects, template, TemplatedReporter.class); reporter.setParameters(getParameters(statement)); reporter.setFields(fields); final Document doc = reporter.getDocument(DocFormats.PDF_TYPE, true); final DocumentHandler handler = handlers.get(doc.getName(), doc.getArchetypeId().getShortName(), doc.getMimeType()); helper.addAttachment(doc.getName(), new InputStreamSource() { public InputStream getInputStream() { return handler.getContent(doc); } }); sender.send(message); if (!statement.isPreview() && !statement.isPrinted()) { setPrinted(statement); } } catch (ArchetypeServiceException exception) { throw exception; } catch (StatementProcessorException exception) { throw exception; } catch (Throwable exception) { throw new StatementProcessorException(exception, FailedToProcessStatement, exception.getMessage()); } }