【问题标题】:Absolute URL in email generated using Velocity template使用 Velocity 模板生成的电子邮件中的绝对 URL
【发布时间】:2015-06-03 16:11:08
【问题描述】:

我正在使用需要使用 Velocity 模板生成电子邮件的 Spring Web 应用程序。我在Spring配置中有如下配置:

<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
    <property name="resourceLoaderPath" value="/WEB-INF/velocity/,classpath:/velocity" />
</bean>

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.mycompany" />
    <property name="port" value="25" />
    <property name="javaMailProperties">
        <props>
            <prop key="mail.mime.charset">UTF-8</prop>
            <prop key="mail.transport.protocol">smtp</prop>
        </props>
    </property>
</bean>

<bean id="mailer" class="com.mycompany.utils.EmailManager">
    <constructor-arg name="mailSender" ref="mailSender" />
    <constructor-arg name="velocityEngine" ref="velocityEngine" />
</bean>

此设置运行良好,所有上下文数据均已正确解析以生成电子邮件。但是,一个变量 $link.contextURL 无法解析,我需要这个,因为电子邮件包含返回 Web 应用程序的绝对 URL。我可以对 URL 进行硬编码,但这显然在 DEV/UAT/PROD 环境中并不是无缝的。我可以在提供给模板的上下文数据中包含 URL,但我想利用流行的 LinkTool Velocity 扩展,它允许我利用 $link.contextURL 变量。有什么方法可以促进这一点?

【问题讨论】:

    标签: java spring email spring-mvc velocity


    【解决方案1】:

    在评估您的邮件模板时,velocity 没有 http-request 上下文,没有它就无法计算完整的 URL。恐怕您必须将 URL 包含到上下文数据中,或者找到一种方法来提供 http-request 上下文以评估邮件模板。

    【讨论】:

    • 由于我在 Spring MVC 控制器中注入了 HttpServletRequest 对象,我最终通过 request.getRequestURL() 获取了 URL,并从中提取了 URL 的所需部分。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2012-03-25
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2018-06-03
    • 2015-01-23
    相关资源
    最近更新 更多