【问题标题】:How to send an email using a html template that contains javascript django?如何使用包含 javascript django 的 html 模板发送电子邮件?
【发布时间】:2020-07-19 20:55:46
【问题描述】:

我有一个电子邮件模板,它从 django 呈现某些日期时间字符串。我想根据用户的时区呈现这个时间。为了解决这个问题,我选择使用momentjs,但是有一次,模板中的 javascript 似乎没有运行,并且包含在 javascript 中的任何内容都不会出现在电子邮件中。基于此答案https://stackoverflow.com/a/42056995/8513875 电子邮件客户端不包含外部 css,我认为这与 javascript 有相同的问题,我将如何让它被识别。

【问题讨论】:

  • 电子邮件客户端不会加载或运行任何 JS。您的应用程序需要在发送电子邮件之前知道用户的时区并使用该时区呈现电子邮件
  • 是否可以使用 github.com/roverdotcom/django-inlinecss 之类的东西,如本答案 stackoverflow.com/a/42056995/8513875 中指定的那样,或者这仅适用于 css。
  • 这些包将 CSS 转换为生成的 HTML 电子邮件中的内联 style 属性。体面的电子邮件客户端将从不支持运行附加到电子邮件的 JS
  • 哦...好的,谢谢@IainShelvington
  • 说明原因:JS可能包含恶意代码即安全风险

标签: javascript django django-templates django-email


【解决方案1】:

扩展@IainShelvington 所说的内容,然后回答...

@oma0256 ...我如何确定用户的时区...

...这是在生成电子邮件之前通过 JavaScript(在浏览器中)获取时区偏移量的方法...

const timezone = (new Date).getTimezoneOffset() / 60;

...再次注意,这将不会在电子邮件中运行,而是应该在从服务使用的任何模板生成电子邮件时使用。

关于问题的第二部分......

@oma0256 ...例如基于他们的电子邮件?

...如果您很幸运,信息将包含在电子邮件标题中,但是,这些信息(就像任何其他客户端提供的数据一样)是不可信的。

归因

MDN -- Date.prototype.getTimezoneOffset()

【讨论】:

    猜你喜欢
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2012-05-17
    • 2016-02-20
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多