Шаблоны электронной почты Java с пользовательским интерфейсом? - PullRequest
2 голосов
/ 23 февраля 2011

Мой веб-сайт, построенный на Java / JSP, должен будет отправлять около 5-10 предопределенных электронных писем, а затем отправлять специальные письма тем, кто зарегистрирован. Я стараюсь не «изобретать велосипед». Я бы предпочел, чтобы шаблонами электронной почты можно было просто управлять с помощью графического интерфейса типа WYSIWYG. Пока что все, что я читал (Velocity, Freemarker и т. Д.), В порядке для предопределенных шаблонов, не имеет пользовательского интерфейса и не очень помогает с adhoc электронными письмами.

Просто любопытно, лучше ли мне самому что-нибудь писать или есть что-то, что может помочь?

1 Ответ

2 голосов
/ 23 февраля 2011

Зачем вам нужен графический интерфейс для создания ваших писем? Лучше сохранять содержимое электронной почты как можно более простым, а не встраивать в него HTML-теги. Если ваш пользователь решит открыть электронное письмо простым текстом или текстом, то все, что он увидит, - это просто куча уродливых тегов.

Используя шаблонизатор, такой как Velocity или Freemarker, вы можете создать свой шаблон электронной почты. Даже при использовании специальных сообщений электронной почты вы можете оставить заголовок и нижний колонтитул одинаковыми с помощью шаблона электронной почты, и вы можете поменять основной текст сообщениями adhoc.

В моем проекте у меня есть шаблон электронной почты, использующий Velocity, например: -

исключение-email.vm файл

** Please do not reply to this message **

The project administrator has been notified regarding this error.
Remote Host : $remoteHost
Server      : $serverName
Request URI : $requestURI
User ID     : $currentUser
Exception   : 

$stackTrace

Чтобы получить составленное письмо в виде строки, я делаю следующее: -

private String getMessage(HttpServletRequest request, Throwable t) {
    Map<String, String> values = new HashMap<String, String>();
    values.put("remoteHost", request.getRemoteHost());
    values.put("serverName", request.getServerName());
    values.put("requestURI", request.getRequestURI());
    values.put("currentUser", ((currentUser != null) ? currentUser.getLanId() : "(User is undefined)"));

    StringWriter sw = new StringWriter(500);
    t.printStackTrace(new PrintWriter(sw));

    values.put("stackTrace", sw.toString());

    return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "exception-email.vm", values);
}

Конечно, я использую Spring для подключения velocityEngine: -

<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
    <property name="velocityProperties">
        <props>
            <prop key="resource.loader">class</prop>
            <prop key="class.resource.loader.class">org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader</prop>
        </props>
    </property>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...