Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Velocity模板生成的电子邮件中的绝对URL_Java_Spring_Email_Spring Mvc_Velocity - Fatal编程技术网

Java 使用Velocity模板生成的电子邮件中的绝对URL

Java 使用Velocity模板生成的电子邮件中的绝对URL,java,spring,email,spring-mvc,velocity,Java,Spring,Email,Spring Mvc,Velocity,我正在使用SpringWeb应用程序,该应用程序需要使用Velocity模板生成电子邮件。我在Spring配置中有以下配置: <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> <property name="resourceLoaderPath" value="/WEB-INF/velocity/,classpath:/velocity

我正在使用SpringWeb应用程序,该应用程序需要使用Velocity模板生成电子邮件。我在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>

UTF-8
smtp

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

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

由于我在Spring MVC控制器中插入了
HttpServletRequest
对象,因此我最终通过
request.getRequestURL()获取URL
并从中提取URL的所需部分。谢谢