我必须在电子邮件正文中发送收件人的当地时间。我的电子邮件正文是html内容。并通过我的c#代码在html正文中传递一些变量,如date等。是否有任何我可以传递的DateTime格式,它将通过邮箱自动转换为本地时间或我可以在html / javascript中执行的操作,这将在收到邮件时将时间动态转换为接收者当地时间?
由于
答案 0 :(得分:1)
简短的回答是没有,抱歉。您可能需要将每个用户的时区存储在某个数据库中,然后您的C#代码将提供一定时间的时间偏移,例如:
<%=MyDate.AddHours(Subscriber.TimeZoneOffset)%>
至于你在电子邮件正文中执行JavaScript的想法:不会发生!!
作为一个懒惰的人,我可能只会在我的电子邮件中满足资格,例如 09:00 GMT / CET / PST 。我意识到这可能不适用于所有用例,但是;)
答案 1 :(得分:0)
JavaScript是一封无法发送的电子邮件,因为出于安全原因,它不会在客户端上执行。因此,发送时必须将时间添加到邮件中。
您的数据库中是否有用户时区,邮政编码或国家/地区短代码?或者,也就是说,用户在发送电子邮件时登录了吗?在这种情况下,您可以使用该数据在服务器上进行数学运算。
如果您事先没有保存他们的时区信息,则无法明确转换为当地时间。
答案 2 :(得分:0)
你无疑会发现。由于需要考虑无数的事情,DateTime操作很难。
用户的时区是什么时候? 他们是否观察到夏令时?
等等...
确保您使用内置的.Net TimeZoneInfo类进行一次转换。例如,如果您想将当前时间转换为“中央标准”时间“你会这样做。
var central = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, central);