Почему мои ссылки HTML из электронной почты Django не кликабельны? - PullRequest
4 голосов
/ 24 июня 2011

Я отправил следующее письмо через Django

    subject, from_email, to = 'site Registration', 'support@site.com', self.second_email
    text_content = 'Click on link to finish registration'
    html_content = '<html><body><a href="site.com/accounts/user/' + self.slug +'">Click Here</a></body></html>'
    msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
    msg.attach_alternative(html_content, "text/html")
    msg.send()

Когда я отправил электронное письмо (электронная почта Google и Yahoo), они оба отобразили текст Click Here синим цветом (я предполагаю, что это означает, что он распознается как ссылка), однако ссылка не активна и не ссылается на сайт. .com / acc ... Что я делаю не так?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 24 июня 2011

Вам, вероятно, нужно сделать его действительным URL: (обратите внимание на включенную схему)

<a href="http://site.com/accounts/user/' + self.slug +'">
1 голос
/ 09 ноября 2013

Я сделал вспомогательную функцию для этого и использовал render_to_string, чтобы использовать шаблон HTML для отправки вместо того, чтобы вводить все в функции.Вот моя функция:

def signup_email(username, email, signup_link):
    subject, from_email, to = 'Site Registration', settings.DEFAULT_FROM_EMAIL, email
    text_content = 'Click on link to finish registration'
    html_content = render_to_string('pet/html_email.html', {'username': username, 'signup_link':signup_link})
    msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
    msg.attach_alternative(html_content, "text/html")
    return msg 

Затем в views.py просто вызовите его:

class OwnerCreateAccount(FormView):
    # class based view  attributes

    def form_valid(self, form):
        # other form logic
        msg = signup_email(username=username, email=email, signup_link=owner.salt)
        msg.send()
        return super(OwnerCreateAccount, self).form_valid(form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...