Example usage for org.springframework.mail.javamail MimeMessageHelper MimeMessageHelper

List of usage examples for org.springframework.mail.javamail MimeMessageHelper MimeMessageHelper

Introduction

In this page you can find the example usage for org.springframework.mail.javamail MimeMessageHelper MimeMessageHelper.

Prototype

public MimeMessageHelper(MimeMessage mimeMessage, int multipartMode) throws MessagingException 

Source Link

Document

Create a new MimeMessageHelper for the given MimeMessage, in multipart mode (supporting alternative texts, inline elements and attachments) if requested.

Usage

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());
    }
}