Pregunta

Estoy usando django-registration, todo está bien, el correo electrónico de confirmación se envió en texto plano, pero sé que estoy arreglado y se envía en html, pero tengo un problema de basura...el código html muestra:

<a href="http://www.example.com/accounts/activate/46656b86eefc490baf4170134429d83068642139/">http://www. example.com/accounts/activate/46656b86eefc490baf4170134429d83068642139/</a>

y no necesito mostrar el código html como...

¿Alguna idea?

Gracias

¿Fue útil?

Solución

Me gustaría recomendar el envío de una versión de texto y una versión HTML. Mira en el models.py del django-registro para:

send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email])

y en lugar de hacer algo como de los documentos http : //docs.djangoproject.com/en/dev/topics/email/#sending-alternative-content-types

from django.core.mail import EmailMultiAlternatives

subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()

Otros consejos

Para evitar parches django-registro, se debe extender el modelo con RegistrationProfile Proxy = True :

models.py

class HtmlRegistrationProfile(RegistrationProfile):
    class Meta:
        proxy = True
    def send_activation_email(self, site):
        """Send the activation mail"""
        from django.core.mail import EmailMultiAlternatives
        from django.template.loader import render_to_string

        ctx_dict = {'activation_key': self.activation_key,
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
                    'site': site}
        subject = render_to_string('registration/activation_email_subject.txt',
                                   ctx_dict)
        # Email subject *must not* contain newlines
        subject = ''.join(subject.splitlines())

        message_text = render_to_string('registration/activation_email.txt', ctx_dict)
        message_html = render_to_string('registration/activation_email.html', ctx_dict)

        msg = EmailMultiAlternatives(subject, message_text, settings.DEFAULT_FROM_EMAIL, [self.user.email])
        msg.attach_alternative(message_html, "text/html")
        msg.send()

Y en su base de registro, sólo tiene que utilizar HtmlRegistrationProfile en lugar de RegistrationProfile .

Sé que esto es antiguo y el paquete de registro ya no se mantiene.Por si acaso alguien todavía quiere esto.Los pasos adicionales relacionados con la respuesta de @bpierre son:
- subclasificar el RegistrationView, es decirvistas.py de tu aplicación

class MyRegistrationView(RegistrationView):
...
def register(self, request, **cleaned_data):
    ...
    new_user = HtmlRegistrationProfile.objects.create_inactive_user(username, email, password, site)

- en su urls.py cambie la vista a la vista subclasificada, es decir- Elemento de lista

url(r'accounts/register/$', MyRegistrationView.as_view(form_class=RegistrationForm), name='registration_register'),'

Este tipo han extendido el defaultBackend que nos permite añadir una versión HTML el correo electrónico de activación.

Específicamente, el trabajo versión alternativa se realiza aquí

Me las arreglé para usar la parte de back-end éxito

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top