【问题标题】:Django anymail links in emails are changed and don't work电子邮件中的 Django anymail 链接已更改并且不起作用
【发布时间】:2018-10-28 09:07:40
【问题描述】:

我正在尝试做一些我认为应该很简单但看起来很复杂的事情。

我正在使用 Django Anymail,将 SparkPost 作为 ESP。我想在电子邮件中包含一个返回我网站的链接,例如<a href="www.example.com>click here</a>

但是,无论我做什么,该链接都会更改为: http://go.sparkpostmail1.com/f/a/Vju1M3X6TVz79ONI6TywgA~~/AAOsuQA~/RgRdt_u-...

然后,当我点击链接时,我会得到一个This site can’t be reached。我禁用了点击和打开跟踪,我尝试将电子邮件作为在 Django 中生成的内容和作为 SparkPost 模板发送,我什至尝试将 ESP 切换到 Mailgun,我得到了相同的结果。

这是我的 Anymail 配置:

EMAIL_BACKEND = "anymail.backends.sparkpost.EmailBackend"

ANYMAIL = {

    "SPARKPOST_API_KEY": "MY_KEY",
    "SPARKPOST_API_URL": "https://api.sparkpost.com/api/v1",
    'SPARKPOST_SENDER_DOMAIN': "mail.mysite.com",

    "SEND_DEFAULTS": {
        "track_clicks": False,
        "track_opens": False,
    },
}

这是我的消息发送功能:

from django.core.mail import EmailMultiAlternatives
from smtplib import SMTPException

def send_welcome_email( address ):
  subject, from_email = 'Hello! Thank you for your interest in Discover three.js', 'Discover three.js <welcome@mail.discoverthreejs.com>'

  html_content = '<a href="www.example.com">click here</a>'
  message = EmailMultiAlternatives(subject, 'Hello!', from_email, [address])
  message.attach_alternative(html_content, "text/html")

  # alternatively, use sparkpost template
  #message.template_id = 'welcome'

  # Tried both of these settings to no avail
  #message.track_clicks = False
  #message.click_tracking= False

  try:
    message.send()
  except SMTPException as e:
    print('There was an error sending an email: ', e)

我在有和没有点击和打开跟踪的情况下都试过了,没有区别。

【问题讨论】:

  • 您在哪里找到了禁用跟踪的选项?除非 anymail 做不同的事情,否则这些都是错误的。正确的值为open_trackingclick_tracking
  • anymail 文档中多次提到它们。例如,在主 github 存储库中,他们使用 msg.track_clicks = True。无论如何,我已尝试将其更改为您的建议,但没有任何区别。我已经编辑了帖子以反映这一点。
  • sparkpost官方python应用也使用track_clickstrack_opens,看来这些应该是对的。
  • 我明白了,它可能是任何将其转换为 esp 特定设置的邮件。我对anymail不太熟悉。但是,您可以从您的 SparkPost 帐户 app.sparkpost.com/account/smtp 全局禁用它们(检查参与设置)
  • 是的,你是对的。 lib 转换为实际标志 github.com/SparkPost/python-sparkpost/blob/master/sparkpost/…

标签: python django mailgun sparkpost


【解决方案1】:

我能够通过从 Anymail 切换到官方 Sparkpost python 应用程序来解决这个问题。

Django 的安装说明为here,禁用点击跟踪的详细信息为here

Sparkpost python 应用程序的 API 与 Anymail API 几乎相同,并且由于禁用此功能的点击跟踪立即起作用,而我花了很长时间试图让它通过两个不同的 ESP 与 Anymail 一起工作,我只能得出结论,这可能是一个 Anymail 错误。

【讨论】:

    【解决方案2】:

    对于 sendgrid 的相同问题,settings.py 中的此 anymail 配置将关闭点击和打开跟踪。

    EMAIL_BACKEND = 'anymail.backends.sendgrid.EmailBackend'
    
    ANYMAIL = {
        'SENDGRID_API_KEY': site_keys.send_grid,
        "SEND_DEFAULTS": {
            "track_clicks": False,
            "track_opens": False,
        },
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-04
      • 2012-01-26
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 2013-08-05
      • 2016-12-04
      • 1970-01-01
      相关资源
      最近更新 更多