【问题标题】:Can you use JavaScript inside an email, which is sent using Python? [duplicate]您可以在使用 Python 发送的电子邮件中使用 JavaScript 吗? [复制]
【发布时间】:2023-03-04 03:37:02
【问题描述】:

您可以在使用 Python 发送的电子邮件中使用 JavaScript 吗?

我的目标是在电子邮件中发送一个工作时钟。

我正在尝试使用 Python 来做到这一点。我正在使用 IDLE 和 Python 库 stmplib、email 和 html2text 来发送电子邮件。我的代码如下所示。我省略了一些细节(样式和脚本),因为它们并不重要。

me = "my.email@gmail.com"
you = "my.email@gmail.com"

msg = MIMEMultipart('alternative')
msg['Subject'] = "Clock"
msg['From'] = me
msg['To'] = you

html = """\
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Clock</title>
        <style></style>
    </head>
    <body>
        <div class="clock">
            <p class="clockhour">HH</p>
            <p class="clocksym1">:</p>
            <p class="clockminute">MM</p>
            <p class="clocksym2">:</p>
            <p class="clocksecond">SS</p>
        </div>
        <script type="text/javascript"></script>
    </body>
</html>
"""

text = html2text(html)

part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')

msg.attach(part1)
msg.attach(part2)

s = SMTP('smtp.gmail.com:587')
s.ehlo()
s.starttls()
s.login("my.email@gmail.com", "my password")

s.sendmail(me, you, msg.as_string())
s.quit()

此代码中 HTML 的完整版本为我提供了一个正常工作的时钟,但如果我尝试使用 Gmail 将其发送给自己,我会收到不同的结果。

查看 HTML:

在 Gmail 中:

这表明,部分 CSS 加载,但其他部分(如字体或字体大小)不加载。它还表明 JavaScript 没有加载。 (通常在浏览器中查看 HTML 代码会显示正常的时钟,而在电子邮件中则不会。)

有没有办法用这个时钟发送电子邮件?

【问题讨论】:

  • 大多数电子邮件客户端/服务不处理 javascript...出于明显的安全原因
  • 发送带有 JavaScript 代码的电子邮件绝对是可能的,但是任何健全的电子邮件客户端(尤其是基于 Web 的客户端)都会忽略任何包含的 JavaScript 代码。至少可以说,能够发送一封包含任意 JavaScript 代码并由收件人的客户端运行的电子邮件是一个很大的隐私和安全问题。
  • @Frxstrem 所以,考虑到我将这个发送给使用 Gmail 的人发送给使用 Gmail 的人,我无能为力?
  • 不使用 javascript..no
  • @charlietfl 有没有办法,也许没有 Javascript 可以做到这一点?

标签: javascript python html css email


【解决方案1】:

简短回答:不可以。您不能将 JavaScript 用于电子邮件模板。


棘手的方法:您可以处理相关文件并使用服务器端语言在模板文件中获取解析值。

Example:

clock.js
// code for js

template.php
// echo the value
// The value is rendered in html and works in email template too.

但是这种情况不适合您,因为您正在尝试实现倒计时时钟。这仅适用于静态值。

但是,链接到外部页面内容将帮助您显示计时器。


对于您的情况,您可以尝试使用http://motionmailapp.com/

希望,这会有所帮助!

【讨论】:

【解决方案2】:

电子邮件 html 中不支持 javascript,但至少您可以放置​​一个指向带有时钟倒计时页面的链接。

【讨论】:

    猜你喜欢
    • 2019-09-19
    • 2011-05-26
    • 2015-12-22
    • 1970-01-01
    • 2012-03-18
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多