在我的Spring Boot应用程序中,我正在使用Thymeleaf生成HTML电子邮件。我想在这些电子邮件中包含一个
。图像存储在/src/main/resources/static/img/logo.png。
我确认可以通过在浏览器中请求http://localhost:8080/img/logo.svg来启动本地应用程序并解析图像。
为了在HTML中包含此图像,我已经尝试了以下所有内容:
1.
2.
3.
4. Base64编码的图像
每个的结果是:
1. 抛出异常:org.thymeleaf.exceptions.TemplateProcessingException:除非用于执行引擎的上下文实现了org.thymeleaf.context.IWebContext接口,否则链接基础“/img/logo.svg”无法是上下文相关的(/ ...) 2. 渲染出
,在电子邮件中显示为损坏的图像。
3. 渲染出
,在电子邮件中显示为损坏的图像。
4. 大多数测试的邮件客户端都会渲染出该图像,但它被Gmail阻止,并且没有办法通过设置来取消阻止。
我猜为了在电子邮件中正确呈现图像,我需要提供绝对URL,但是我不确定如何做到这一点。
问题的一部分是很难确定电子邮件未显示是否因为URL不正确或邮件客户端阻止图像。
更新
我认为这显而易见,但显然不是:我不能使用任何硬编码主机名为localhost:8080的解决方案,因为这只是我在本地运行时使用的URL,而且我也需要它在其他环境中工作,例如生产。
我确认可以通过在浏览器中请求http://localhost:8080/img/logo.svg来启动本地应用程序并解析图像。
为了在HTML中包含此图像,我已经尝试了以下所有内容:
1.
1. 抛出异常:org.thymeleaf.exceptions.TemplateProcessingException:除非用于执行引擎的上下文实现了org.thymeleaf.context.IWebContext接口,否则链接基础“/img/logo.svg”无法是上下文相关的(/ ...) 2. 渲染出
![](“img/logo.png”/)
![](“/img/logo.png”/)
我猜为了在电子邮件中正确呈现图像,我需要提供绝对URL,但是我不确定如何做到这一点。
问题的一部分是很难确定电子邮件未显示是否因为URL不正确或邮件客户端阻止图像。
更新
我认为这显而易见,但显然不是:我不能使用任何硬编码主机名为localhost:8080的解决方案,因为这只是我在本地运行时使用的URL,而且我也需要它在其他环境中工作,例如生产。