Code Snippet

Just another Code Snippet site

[Java] Send HTML Mail using JNDI MailSender

JavaMailSender is retrieved using Spring @Autowired annotation. (JNDI Mail Session behind)

@Service
public class MailService {

    /** The logger. */
    private static final Logger LOGGER = LoggerFactory.getLogger(MailService.class);

    /** Allows sending messages. */
    @Autowired
    private JavaMailSender mailSender;

    public void sendMessage(final String from, final List<String> listOfRecipients,
            StringWriter htmlContent, final String subject) {
        LOGGER.debug("<sendMessage>");

        // For each recipients
        for (String to : listOfRecipients) {

            // Prepare message
            LOGGER.trace("Prepare message ...");
            MimeMessagePreparator preparator = prepareMessage(from, to, subject, htmlContent);

            // Send e-mails
            LOGGER.trace("Send e-mail ...");
            sendMessage(preparator);
        }
    }

    /**
     * Create an HTML Message ready to be sent by mail.
     * 
     * @param sendMail
     *            Sender email
     * @param mailRecipient
     *            Recipient email
     * @param mailSubject
     *            Mail subject
     * @param content
     *            HTML content
     * @return a {@link MimeMessagePreparator}
     */
    private MimeMessagePreparator prepareMessage(final String sendMail, final String mailRecipient,
            final String mailSubject, final StringWriter content) {
        LOGGER.debug("<prepareMessage>");

        MimeMessagePreparator preparator = new MimeMessagePreparator() {
            @Override
            public void prepare(final MimeMessage mimeMessage) throws MessagingException {
                LOGGER.debug("<To> " + mailRecipient);
                LOGGER.debug("<From> " + sendMail);
                LOGGER.debug("<Subject> " + mailSubject);

                MimeMessageHelper mimeHelper = new MimeMessageHelper(mimeMessage, true);
                mimeHelper.addTo(mailRecipient);
                mimeHelper.setSubject(mailSubject);
                mimeHelper.setFrom(sendMail);
                mimeHelper.setReplyTo(sendMail);
                mimeHelper.setText(content.toString(), true);
            }
        };

        return preparator;
    }

    /**
     * Send email with JNDI MailSession.
     * 
     * @param message
     *            to send
     * @throws TicException
     *             in case of error
     */
    private void sendMessage(final MimeMessagePreparator message) {
        LOGGER.debug("<sendMessage>");
        try {
            mailSender.send(message);
        } catch (MailException e) {
            // TODO : handle exception
        }
    }
}

, ,


Leave a Reply

Your email address will not be published. Required fields are marked *