我正在尝试做一些我认为应该很简单但似乎很复杂的事情。
我正在使用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)
无论是否点击和打开跟踪,我都尝试过此操作,这没有什么区别。
答案 0 :(得分:1)
我能够通过从Anymail切换到官方的Sparkpost python应用程序来解决此问题。
Django的安装说明为here,禁用点击跟踪的详细信息为here。
Sparkpost python应用程序的API几乎与Anymail API相同,并且由于禁用此功能的点击跟踪立即生效,尽管我花了很长时间尝试使其通过两个不同的ESP与Anymail一起使用,我只能得出结论,这可能是Anymail错误。
答案 1 :(得分:0)
对于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,
},
}