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, @Nullable String encoding)
        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.openvpms.web.component.mail.AbstractMailer.java

/**
 * Sends the object to the default email address.
 *
 * @throws OpenVPMSException for any error
 *//* ww  w  .  j ava 2 s . c  o m*/
public void send() {
    MimeMessage message = sender.createMimeMessage();
    try {
        MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
        populateMessage(helper);
        sender.send(message);
    } catch (OpenVPMSException exception) {
        throw exception;
    } catch (Throwable exception) {
        String address = (to != null) ? StringUtils.join(to, ", ") : null;
        throw new MailException(MailException.ErrorCode.FailedToSend, address, exception.getMessage());
    }
}

From source file:org.yes.cart.service.mail.impl.MailComposerImpl.java

void composeMessage(final MimeMessage message, final String shopCode, final String locale,
        final List<String> mailTemplateChain, final String templateName, final String from,
        final String toEmail, final String ccEmail, final String bccEmail, final Map<String, Object> model)
        throws MessagingException, IOException, ClassNotFoundException {

    final MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");

    helper.setTo(toEmail);/*  ww w.  j  ava  2  s  .  c  om*/

    helper.setSentDate(new Date());

    if (ccEmail != null) {
        helper.setCc(ccEmail);
    }

    if (bccEmail != null) {
        helper.setBcc(bccEmail);
    }

    final String textTemplate = getTemplate(mailTemplateChain, shopCode, locale, templateName, ".txt");
    final String htmlTemplate = getTemplate(mailTemplateChain, shopCode, locale, templateName, ".html");
    final String propString = getTemplate(mailTemplateChain, shopCode, locale, templateName, ".properties");
    final Properties prop = new Properties();
    if (propString != null) {
        prop.load(new StringReader(propString));
    }
    helper.setSubject(prop.getProperty("subject"));

    if (from == null) {
        helper.setFrom(prop.getProperty("from"));
    } else {
        helper.setFrom(from);
    }

    composeMessage(helper, textTemplate, htmlTemplate, mailTemplateChain, shopCode, locale, templateName,
            model);

}

From source file:org.yes.cart.service.mail.impl.MailComposerImpl.java

/** {@inheritDoc} */
@Override// w ww.j av a  2 s. c  o m
public void convertMessage(final Mail mail, final MimeMessage mimeMessage)
        throws MessagingException, IOException, ClassNotFoundException {

    final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

    helper.setTo(mail.getRecipients());

    helper.setSentDate(new Date());

    if (mail.getCc() != null) {
        helper.setCc(mail.getCc());
    }

    if (mail.getBcc() != null) {
        helper.setBcc(mail.getBcc());
    }

    final String textTemplate = mail.getTextVersion();
    final String htmlTemplate = mail.getHtmlVersion();

    helper.setSubject(mail.getSubject());
    helper.setFrom(mail.getFrom());

    if (textTemplate == null || htmlTemplate == null) {
        if (textTemplate != null) {
            helper.setText(textTemplate, false);
        }

        if (htmlTemplate != null) {
            helper.setText(htmlTemplate, true);
            inlineResources(helper, mail);
        }

    } else {
        helper.setText(textTemplate, htmlTemplate);
        inlineResources(helper, mail);
    }

}

From source file:org.yes.cart.service.mail.impl.MailComposerImplTest.java

@Test
public void testComposeMimeMessageInternalTextAndHtmlVersion()
        throws MessagingException, IOException, ClassNotFoundException {
    // of course you would use DI in any real-world cases
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost("localhost");
    MimeMessage message = sender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    String textTemplate = "$name lives in theme park with <% with.each{ out.print(it + ' ');}%>";
    String htmlTemplate = "<h2>$name</h2> lives in theme park with:<br> <% with.each{ out.print(it + '<br>');}%>";
    MailComposerImpl mailComposer = new MailComposerImpl(null);
    mailComposer.composeMessage(helper, textTemplate, htmlTemplate, Collections.EMPTY_LIST, "SHOP10", "en",
            "test", createModel());
    assertTrue(helper.isMultipart());/*from   w  ww .j a va 2s. c  o  m*/
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    helper.getMimeMessage().writeTo(byteArrayOutputStream);
    String str = byteArrayOutputStream.toString("UTF-8");
    assertNotNull(str);
    // html and text present in mail message
    assertTrue(str.contains("Bender lives in theme park with blackjack poetess"));
    assertTrue(str.contains("<h2>Bender</h2> lives in theme park with:<br> blackjack<br>poetess<br>"));
}

From source file:org.yes.cart.service.mail.impl.MailComposerImplTest.java

/**
 * Text template only/*from   ww w.j a  v  a2 s  .c  o m*/
 */
@Test
public void testComposeMimeMessageInternalTextVersionOnly()
        throws MessagingException, IOException, ClassNotFoundException {
    // of course you would use DI in any real-world cases
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost("localhost");
    MimeMessage message = sender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    String textTemplate = "$name lives in theme park with <% with.each{ out.print(it + ' ');}%>";
    String htmlTemplate = null;
    MailComposerImpl mailComposer = new MailComposerImpl(null);
    mailComposer.composeMessage(helper, textTemplate, htmlTemplate, Collections.EMPTY_LIST, "SHOP10", "en",
            "test", createModel());
    assertTrue(helper.isMultipart());
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    helper.getMimeMessage().writeTo(byteArrayOutputStream);
    String str = byteArrayOutputStream.toString("UTF-8");
    assertNotNull(str);
    // html and text present in mail message
    assertTrue(str.contains("Bender lives in theme park with blackjack poetess"));
}

From source file:org.yes.cart.service.mail.impl.MailComposerImplTest.java

/**
 * html only/*w  w  w .j ava2s  .  com*/
 */
@Test
public void testComposeMimeMessageInternalHtmlVersionOnly()
        throws MessagingException, IOException, ClassNotFoundException {
    // of course you would use DI in any real-world cases
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost("localhost");
    MimeMessage message = sender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    String textTemplate = null;
    String htmlTemplate = "<h2>$name</h2> lives in theme park with:<br> <% with.each{ out.print(it + '<br>');}%>";
    MailComposerImpl mailComposer = new MailComposerImpl(null);
    mailComposer.composeMessage(helper, textTemplate, htmlTemplate, Collections.EMPTY_LIST, "SHOP10", "en",
            "test", createModel());
    assertTrue(helper.isMultipart());
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    helper.getMimeMessage().writeTo(byteArrayOutputStream);
    String str = byteArrayOutputStream.toString("UTF-8");
    assertNotNull(str);
    // html and text present in mail message
    assertTrue(str.contains("<h2>Bender</h2> lives in theme park with:<br> blackjack<br>poetess<br>"));
}

From source file:org.yes.cart.service.mail.impl.MailComposerImplTest.java

@Test
public void testComposeMimeMessageInternalFullIntegration()
        throws MessagingException, IOException, ClassNotFoundException {

    final MailTemplateResourcesProvider mailTemplateResourcesProvider = mockery
            .mock(MailTemplateResourcesProvider.class);

    mockery.checking(new Expectations() {
        {//  w w w .  j a  va  2s  . c  o m
            one(mailTemplateResourcesProvider).getTemplate(Arrays.asList("default/mail/"), "SHOP10", "en",
                    "imtest", ".txt");
            will(returnValue(IOUtils.toString(
                    new FileInputStream(new File("src/test/resources/mailtemplates/default/imtest/imtest.txt")),
                    "UTF-8")));
            one(mailTemplateResourcesProvider).getTemplate(Arrays.asList("default/mail/"), "SHOP10", "en",
                    "imtest", ".html");
            will(returnValue(IOUtils.toString(
                    new FileInputStream(
                            new File("src/test/resources/mailtemplates/default/imtest/imtest.html")),
                    "UTF-8")));
            one(mailTemplateResourcesProvider).getTemplate(Arrays.asList("default/mail/"), "SHOP10", "en",
                    "imtest", ".properties");
            will(returnValue(IOUtils.toString(
                    new FileInputStream(
                            new File("src/test/resources/mailtemplates/default/imtest/imtest.properties")),
                    "UTF-8")));
            one(mailTemplateResourcesProvider).getResource(Arrays.asList("default/mail/"), "SHOP10", "en",
                    "imtest", "test.gif");
            will(returnValue(IOUtils.toByteArray(new FileInputStream(
                    new File("src/test/resources/mailtemplates/default/imtest/resources/test.gif")))));
            one(mailTemplateResourcesProvider).getResource(Arrays.asList("default/mail/"), "SHOP10", "en",
                    "imtest", "test.jpeg");
            will(returnValue(IOUtils.toByteArray(new FileInputStream(
                    new File("src/test/resources/mailtemplates/default/imtest/resources/test.jpeg")))));
        }
    });

    // of course you would use DI in any real-world cases
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost("localhost");
    MimeMessage message = sender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    MailComposerImpl mailComposer = new MailComposerImpl(mailTemplateResourcesProvider);
    mailComposer.composeMessage(message, "SHOP10", "en", Arrays.asList("default/mail/"), "imtest",
            "test@localhost.lo", "to@somedomain.com", "cc@somedomain.com", "bcc@somedomain.com", createModel());
    assertTrue(helper.isMultipart());
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    helper.getMimeMessage().writeTo(byteArrayOutputStream);
    String str = byteArrayOutputStream.toString("UTF-8");
    assertNotNull(str);
    // html and text present in mail message
    assertTrue(str.contains("Bender lives in theme park with blackjack poetess"));
    assertTrue(str.contains("<h2>Bender</h2> lives in theme park with:<br> blackjack<br>poetess<br>"));
    assertTrue(str.contains("From: test@localhost.lo"));
    assertTrue(str.contains("To: to@somedomain.com"));
    assertTrue(str.contains("cc@somedomain.com"));
    assertTrue(str.contains("Bcc: bcc@somedomain.com"));
    assertEquals(" ?", message.getSubject());

    mockery.assertIsSatisfied();
}

From source file:org.yes.cart.service.mail.impl.MailComposerImplTest.java

@Test
public void complexObjectNavigation() throws MessagingException, IOException, ClassNotFoundException {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("root", new Pair("hi", "there"));
    String textTemplate = "$root.first $root.second";
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost("localhost");
    MimeMessage message = sender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    MailComposerImpl mailComposer = new MailComposerImpl(null);
    mailComposer.composeMessage(helper, textTemplate, null, Collections.EMPTY_LIST, "SHOP10", "en", "test",
            map);//  w  w  w  .j a  v a 2s.  com
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    helper.getMimeMessage().writeTo(byteArrayOutputStream);
    String str = byteArrayOutputStream.toString("UTF-8");
    assertNotNull(str);
    // html and text present in mail message
    assertTrue(str.contains("hi there"));
}

From source file:org.yes.cart.service.mail.impl.MailComposerImplTest.java

/**
 * html only/*from  w  w  w  .j  a  va  2  s.  co m*/
 */
@Test
public void testConvertMailEntityToMimeMessage()
        throws MessagingException, IOException, ClassNotFoundException {
    // of course you would use DI in any real-world cases

    final Mail mail = new MailEntity();
    mail.setShopCode("SHOP10");
    mail.setSubject(" ?");
    mail.setFrom("test@localhost.lo");
    mail.setRecipients("to@somedomain.com");
    mail.setCc("cc@somedomain.com");
    mail.setBcc("bcc@somedomain.com");
    mail.setTextVersion("Bender lives in theme park with blackjack poetess");
    mail.setHtmlVersion("<h2>Bender</h2> lives in theme park with:<br> blackjack<br>poetess<br>");

    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost("localhost");
    MimeMessage message = sender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");

    MailComposerImpl mailComposer = new MailComposerImpl(null);
    mailComposer.convertMessage(mail, message);

    assertTrue(helper.isMultipart());
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    helper.getMimeMessage().writeTo(byteArrayOutputStream);
    String str = byteArrayOutputStream.toString("UTF-8");
    assertNotNull(str);
    // html and text present in mail message
    assertTrue(str.contains("Bender lives in theme park with blackjack poetess"));
    assertTrue(str.contains("<h2>Bender</h2> lives in theme park with:<br> blackjack<br>poetess<br>"));
    assertTrue(str.contains("From: test@localhost.lo"));
    assertTrue(str.contains("To: to@somedomain.com"));
    assertTrue(str.contains("cc@somedomain.com"));
    assertTrue(str.contains("Bcc: bcc@somedomain.com"));
    assertEquals(" ?", message.getSubject());

}

From source file:se.vgregion.webbisar.presentation.WebbisarFlowSupportBean.java

public MailMessageResultBean sendWebbis(final Long webbisId, final MailMessageBean mailMessageBean)
        throws WebbisNotFoundException {

    // Validate email adresses first
    MailMessageResultBean result = validateEmailAddresses(mailMessageBean);
    if (Boolean.FALSE.equals(result.getSuccess())) {
        return result;
    }//  w  w w .  jav  a2s. c  om
    // Validate sender name
    if (StringUtils.isBlank(mailMessageBean.getSenderName())) {
        result.setSuccess(Boolean.FALSE);
        result.setMessage("Namn p avsndare mste anges.");
        return result;
    }

    // use this map to store the information that will be merged into the html template
    Map<String, String> emailInformation = new HashMap<String, String>();
    WebbisBean webbisBean = getWebbis(webbisId, null, null, null, null);
    Map<Long, String> webbisarIdNames = webbisBean.getMultipleBirthSiblingIdsAndNames();

    String messageText = mailMessageBean.getMessage();
    if (!StringUtils.isEmpty(messageText)) {
        messageText = messageText.replace("\r", "").replace("\n", "<br/>");
    }

    // add the current webbis to the list of siblings so that
    // we have them all in the same Map
    webbisarIdNames.put(webbisBean.getId(), webbisBean.getName());

    // add the message and the base url for html links
    emailInformation.put("baseUrl", cfg.getExternalBaseUrl());
    emailInformation.put("message", messageText);
    emailInformation.put("senderName", mailMessageBean.getSenderName());
    emailInformation.put("senderAddress", mailMessageBean.getSenderAddress());

    VelocityContext context = new VelocityContext();
    context.put("emailInfo", emailInformation);
    context.put("webbisInfo", webbisarIdNames);

    Template template = null;
    StringWriter msgWriter = null;
    try {
        velocityEngine.init();
        template = velocityEngine.getTemplate(cfg.getMailTemplate());
        msgWriter = new StringWriter();
        template.merge(context, msgWriter);
    } catch (Exception e1) {
        LOGGER.error("Failed to get/merge velocity template.", e1);
        result.setSuccess(Boolean.FALSE);
        result.setMessage("Internt fel, webbis kunde inte skickas.");
        return result;
    }
    String msgText = msgWriter.toString();

    // Seems OK, try to send mail...
    try {
        InternetAddress fromAddress = null;
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, ENCODING_UTF8);
        try {
            fromAddress = new InternetAddress(cfg.getMailFromAddress(), cfg.getMailFromAddressName());
        } catch (UnsupportedEncodingException e) {
            fromAddress = new InternetAddress(cfg.getMailFromAddress());
        }
        helper.setTo(mailMessageBean.getRecipientAddresses().split(","));
        helper.setFrom(fromAddress);
        helper.setSubject(mailMessageBean.getSubject());
        helper.setText(msgText, true);

        // include the vgr logo
        String logoPath = cfg.getMultimediaFileBaseDir() + "/" + cfg.getMailLogo();
        FileSystemResource res = new FileSystemResource(new File(logoPath));
        helper.addInline("imageIdentifier", res);

        mailSender.send(mimeMessage);
    } catch (MailException ex) {
        LOGGER.error("Failed to create/send mail.", ex);
        result.setSuccess(Boolean.FALSE);
        result.setMessage("Internt fel, webbis kunde inte skickas.");
        return result;
    } catch (MessagingException e) {
        LOGGER.error("Failed to create/send mail.", e);
        result.setSuccess(Boolean.FALSE);
        result.setMessage("Internt fel, webbis kunde inte skickas.");
        return result;
    }

    // ...and all was well...
    result.setSuccess(Boolean.TRUE);
    result.setMessage("Webbis skickad!");
    return result;
}