List of usage examples for org.springframework.mail.javamail MimeMessageHelper MimeMessageHelper
public MimeMessageHelper(MimeMessage mimeMessage, int multipartMode, @Nullable String encoding) throws MessagingException
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; }