在客户端/用户时区的电子邮件内容/正文中显示日期/时间/小时

时间:2017-07-20 13:03:19

标签: java spring email gmail freemarker

我有用Java编写的Web应用程序。它使用Spring和Freemarker从模板和Spring JavaMailSender发送电子邮件发送它们。

我在其内容中发送包含时间的电子邮件。问题是服务器在UTC + 00时区存储时间,客户端可能有不同的时区,例如UTC + 03。例如,在电子邮件内容中有20/07/2017 11:30(UTC + 00),但收件人需要20/07/2017 14:30(UTC + 03)。

我的问题是:是否可以在客户端时区显示电子邮件内容的时间而无需在服务器端提供有关其时区的信息?例如,是否有一些技巧可以告诉电子邮件客户端在他的时区中解释给定时间?

1 个答案:

答案 0 :(得分:1)

经过小规模研究后我自己的答案:

没有"真正的解决方案"在电子邮件中显示用户时区的时间,但没有关于他在后端的时区信息,但有解决方法

<强>解释

  • 所有现代电子邮件客户端都会过滤掉Javascript内容,因此不会 可以制作一个脚本,根据时间显示时间 客户时区
  • 没有&#34;魔术特技&#34;给电子邮件客户端一些线索 html的一部分包含时间,它应该合理地格式化 办法。特别是Gmail没有此类功能

<强>解决方案:

将用户时区存储在后端(我们向其发送电子邮件的用户)。

他们的时区可以通过两种方式保存:

  • Statically - 有一个用户指定其时区的地方(输入)。例如,首先登录或/和&#34;设置&#34;菜单。
  • Dynamically - 用户时区是在他不知情的情况下动态获取的。例如,在通过Javascript获取每个登录用户时区后,发送到后端并保存在数据库中。

<强>解决方法:

出于某种原因,您不想实施&#34;真正的解决方案&#34;有一些解决方法

  1. 最简单的方法是显示时间旁边的时区信息 例如,20/07/2017 11:30提供的信息不足,因为我们不知道时区,但20/07/2017 11:30 (UTC+03)会提供用户需要的所有信息。如果他想在自己的时区里度过时间,他只需要自己做数学。

  2. 有点复杂的做法是提供一个网页链接,在客户时区显示时间并获取参数时间。
    例如:
    https://some-time-resolving-service.com/time/20-07-2017/11/30
    使用Javascript检查客户端时区,并根据参数和时区显示网站的时间 互联网上有提供此类功能的服务。例如https://www.timeanddate.com/worldclock/,松散团队在其状态站点上用于显示读者时区中的事件,中断等时间。示例:我从此事件中获取的https://www.timeanddate.com/worldclock/fixedtime.html?iso=20181108T0035&p1=224https://status.slack.com/2018-11/8abae7811317864c

  3. 与第二点相同,但不是提供链接嵌入图像并使用返回图像的服务。
    像那样:
    <img src="https://some-time-resolving-service.com/timeimage/20-07-2017/11/30" alt="Time in the right timezone" height="50" width="100">
    或者是这样的:
    <img src="https://some-time-resolving-service.com/timeimages/20-07-2017-11-30.png" alt="Time in the right timezone" height="50" width="100">
    我不确定它是否有效。