Django anymail ссылки в письмах изменены и не работают
Я пытаюсь сделать что-то, что, на мой взгляд, должно быть очень простым, но кажется очень сложным.
Я использую 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)
Я пробовал это как с, так и без кликов и открытого отслеживания, это не имеет значения.
1 ответ
Я смог решить эту проблему, переключившись с Anymail на официальное приложение Sparkpost Python.
Инструкции по установке Django находятся здесь, а подробности отключения отслеживания кликов здесь.
API для Python-приложения Sparkpost практически идентичен API-интерфейсу Anymail, и, поскольку отключение отслеживания кликов для этого сработало сразу, хотя я потратил много времени, пытаясь заставить его работать с Anymail через два разных ESP, я могу только сделать вывод, что это, вероятно, ошибка Anymail.
Для той же проблемы с sendgrid эта конфигурация anymail в вашем settings.py
отключит отслеживание кликов и откроет.
EMAIL_BACKEND = 'anymail.backends.sendgrid.EmailBackend'
ANYMAIL = {
'SENDGRID_API_KEY': site_keys.send_grid,
"SEND_DEFAULTS": {
"track_clicks": False,
"track_opens": False,
},
}