Отправка писем с помощью JSP и Spring 3.0 - PullRequest
1 голос
/ 08 декабря 2010

Можно ли с помощью JSP создать почтовое сообщение, которое будет отправлено с помощью механизма JavaMailSender Spring 3.0? JavaMailSender, вероятно, имеет мало общего с этим вопросом, но идея состоит в том, чтобы воспользоваться механизмом <fmt:message key="phrasetitle"/> интернационализации JSP, его JSTL-кодом переменной / цикла и позволить дизайнерам легко передать мне заполненные html-письма.

Кроме того, я мог бы создать веб-страницу, которая импортирует этот JSP, чтобы я мог легко предоставить ссылку в каждом письме, чтобы иметь возможность просматривать это письмо в Интернете в случае, если его клиент не видит HTML должным образом.

ОБНОВЛЕНИЕ : 2 ответа ниже предлагают использовать Velocity для электронной почты вместо JSP, поэтому кажется, что это разумный выбор. Тем не менее, всего лишь небольшое быстрое сканирование stackoverflow позволяет предположить, что FreeMarker лучше подходит для моих нужд. В частности, я хочу иметь страницу JSP, которая отражает то, что отправлено по электронной почте. Мне придется перевести код из JSP в Velocity или FreeMarker, но преимущество, которое дает мне FreeMarker, заключается в том, что я могу повторно использовать большую часть кода JSP, в частности, библиотеки тегов. Имеет ли это смысл?

Ответы [ 3 ]

3 голосов
/ 09 декабря 2010

JSP не является шаблонной технологией.Для этого, например, Velocity - лучший выбор.

Если вы действительно настаиваете на использовании JSP, то вам нужно выполнить его локально с помощью java.net.URL.

InputStream input = new URL("http://localhost:8080/context/mailtemplate.jsp").openStream();
0 голосов
/ 10 октября 2011

Хотя я согласен с тем, что Velocity или Freemarker могут быть лучшим выбором, если вам действительно нужно визуализировать JSP и записать вывод в виде строки (которую можно передать в JavaMailer), ознакомьтесь с моим руководством по CapturingВывод JSP

Он использует Spring 3, а также позволяет использовать fmt: message, fmt: formatNumber и spring: message.Основная идея заключается в том, чтобы использовать метод RequestDispatcher.include для визуализации страницы в MockHttpServletRequest.

0 голосов
/ 09 декабря 2010

Есть некоторая Spring документация об использовании Velocity, которая будет делать то, что вы хотите. Я использую его для обработки электронных писем в Spring, и он отлично работает.

Что я обычно делаю, так это имею службу EmailService, которую я вызываю от контроллера, чья работа заключается в том, чтобы заботиться об отправке электронных писем. Методы внутри него принимают объект Command, доступ к которому осуществляется в шаблоне скорости и который отображается как строка (тело письма). Затем вы можете использовать MailSender и т. Д. Для отправки почты.

...