如何在邮件中发送收件人当地时间?

Posted

技术标签:

【中文标题】如何在邮件中发送收件人当地时间?【英文标题】:How to send the recepients local time in mails ? 【发布时间】:2013-11-20 10:03:09 【问题描述】:

我必须在电子邮件正文中发送收件人的当地时间。我的电子邮件正文是 html 内容。并通过我的 c# 代码在 html 正文中传递一些变量,如日期等。是否有任何我可以传递的 DateTime 格式,它将由邮箱自动转换为本地时间,或者我可以在 html/javascript 中执行的操作,当收到邮件时将时间动态转换为收件人本地时间?

谢谢

【问题讨论】:

【参考方案1】:

简短的回答是,抱歉。您要么需要将每个用户的 time-zone 存储在某个数据库中,然后您的 C# 代码将提供一定小时数的时间偏移,例如:

<%=MyDate.AddHours(Subscriber.TimeZoneOffset)%>

至于您在电子邮件正文中执行 JavaScript 的想法:不会发生!

作为一个懒惰的人,我可能只会在我的电子邮件中满足所有时间的资格要求,例如 09:00 GMT/CET/PST。不过,我意识到这可能不适用于所有用例;)

【讨论】:

我们可以存储用户上次登录时的时区信息,但是如果他上次登录的时区与他打开邮件的时区不同怎么办。它肯定没有效率。我想如果没有其他办法,那么我将不得不在日期时间旁边显示 GMT :( 嗯,这就是我所说的边缘案例。您的大多数用户在同一时区生活和工作,不是吗?你刚才建议的是解决问题的一个非常聪明的方法。荣誉。 如果可能,我会将用户的时区存储在配置文件中,并使用它在服务器上进行转换。【参考方案2】:

JavaScript 是不允许发送电子邮件的,因为出于安全原因,它不会在客户端上执行。因此,发送时必须在邮件中加上时间。

您的数据库中是否有用户时区、邮政编码或国家/地区短代码?或者,用户在发送电子邮件时是否已登录?在这种情况下,您可以使用该数据在服务器上进行数学运算。

如果你事先没有掌握他们的时区信息,你肯定不能转换成他们的当地时间。

【讨论】:

以上是关于如何在邮件中发送收件人当地时间?的主要内容,如果未能解决你的问题,请参考以下文章

将当地时间转换为UTC时间

UTC 时间、时区、夏令时和夏令时切换日期

如何向 2 个收件人发送电子邮件并且两个收件人在收件人字段中看到对方?

如何在iOS上获取当地时间[重复]

如何在网页中将 UTC 时间显示为当地时间?

如何在 SSIS 或 SQL 中使用不同的数据集向不同的收件人发送电子邮件?